Java Naming and Directory Interface ( JNDI ) este un set de API-uri Java organizate ca un serviciu de director care permite clienților Java să deschidă și să vizualizeze date și obiecte după numele lor. Ca orice alt API Java, ca set de interfețe , JNDI este independent de implementarea de bază. În plus, oferă o implementare a interfeței furnizorului de servicii (SPI) care permite asocierea serviciilor de director cu un . Poate fi un server, un fișier sau o bază de date [1] .
Conceptul de JNDI se bazează pe două definiții principale: asociere și context. O asociere ( eng. binding ) este o corespondență între un nume JNDI și un obiect. Context ( contextul englezesc ) este un mediu în care este stocat un set de asocieri între obiecte și nume.
Serviciile Java RMI și Jakarta EE API utilizează abordările descrise în API-ul JNDI pentru a găsi obiecte pe web. API-ul oferă:
Partea SPI a interfețelor vă permite să acceptați aproape orice tip de denumire a directorului, inclusiv:
Accesarea contextului și lucrul cu JNDI necesită importarea și interacțiunea cu API-urile și clasele din pachet javax.naming[4] .
import javax.naming.Context ; import javax.naming.InitialContext ; import javax.naming.NamingException ;main() În cel mai simplu caz, se creează un context inițial din metoda . Tipul de denumire a directorului este specificat prin setarea variabilelor de mediu . O modalitate de a le seta este utilizarea unui obiect de tip Hashtable, care este transmis constructorului de clasă InitialContext:
Hashtable env = new Hashtable (); env . pune ( Context . INITIAL_CONTEXT_FACTORY , "com.sun.jndi.fscontext.RefFSContextFactory" ); Context ctx = new InitialContext ( env );Recuperarea unui obiect salvat anterior dintr-un context este posibilă prin apelarea Context.lookup() obiectului context [5] :
Obiect obj = ctx . căutare ( "/com/sampleproject/SampleObject" );