Java Naming and Directory Interface ( JNDI ) je sada rozhraní Java API organizovaná jako adresářová služba , která umožňuje klientům Java otevírat a zobrazovat data a objekty podle jejich jmen. Jako každé jiné Java API je JNDI jako sada rozhraní nezávislé na základní implementaci. Kromě toho poskytuje implementaci rozhraní poskytovatele služeb (SPI), která umožňuje spárování adresářových služeb s . Může to být server, soubor nebo databáze [1] .
Koncept JNDI je založen na dvou hlavních definicích: asociace a kontext. Asociace ( anglicky binding ) je shoda mezi jménem JNDI a objektem. Kontext ( anglicky context ) je prostředí, ve kterém je uložena množina asociací mezi objekty a názvy.
Služby Java RMI a Jakarta EE API využívají k vyhledávání objektů na webu přístupy popsané v JNDI API. API poskytuje:
Část rozhraní SPI vám umožňuje podporovat téměř jakýkoli typ pojmenování adresářů, včetně:
Přístup ke kontextu a práce s JNDI vyžaduje import a interakci s API a třídami z balíčku javax.naming[4] .
import javax.naming.Context ; import javax.naming.InitialContext ; import javax.naming.NamingException ;main() V nejjednodušším případě je počáteční kontext vytvořen z metody . Typ pojmenování adresáře je určen nastavením proměnných prostředí . Jedním ze způsobů, jak je nastavit, je použít objekt typu Hashtable, který je předán konstruktoru třídy InitialContext:
Hashtable env = new Hashtable (); env . put ( Context . INITIAL_CONTEXT_FACTORY , "com.sun.jndi.fscontext.RefFSContextFactory" ); Context ctx = new InitialContext ( env );Načtení dříve uloženého objektu z kontextu je možné voláním Context.lookup() objektu kontextu [5] :
Objekt obj = ctx . vyhledávání ( "/com/sampleproject/SampleObject" );