Java Naming and Directory Interface ( JNDI ) är en uppsättning Java API :er organiserade som en katalogtjänst som tillåter Java-klienter att öppna och visa data och objekt med deras namn. Som alla andra Java API, som en uppsättning gränssnitt , är JNDI oberoende av den underliggande implementeringen. Utöver detta tillhandahåller den en SPI-implementering ( Service Provider Interface ) som gör att katalogtjänster kan paras med en . Det kan vara en server, en fil eller en databas [1] .
Begreppet JNDI bygger på två huvuddefinitioner: association och sammanhang. En association ( eng. binding ) är en överensstämmelse mellan ett JNDI-namn och ett objekt. Kontext ( engelska context ) är en miljö där en uppsättning associationer mellan objekt och namn lagras.
Java RMI och Jakarta EE API-tjänster använder de metoder som beskrivs i JNDI API för att hitta objekt på webben. API:et tillhandahåller:
SPI -delen av gränssnitten låter dig stödja nästan alla typer av katalognamn, inklusive:
Att komma åt sammanhanget och arbeta med JNDI kräver import och interaktion med API:er och klasser från paketet javax.naming[4] .
importera javax.naming.Context ; importera javax.naming.InitialContext ; importera javax.naming.NamingException ;main() I det enklaste fallet skapas ett initialt sammanhang från metoden . Katalognamnstypen anges genom att ställa in miljövariabler . Ett sätt att ställa in dem är att använda ett objekt av typen Hashtable, som skickas till klasskonstruktorn InitialContext:
Hashtable env = ny hashtabell (); env . put ( Context . INITIAL_CONTEXT_FACTORY , "com.sun.jndi.fscontext.RefFSContextFactory" ); Context ctx = new InitialContext ( env );Att hämta ett tidigare sparat objekt från ett sammanhang är möjligt genom att anropa Context.lookup() kontextobjektet [5] :
Objekt obj = ctx . lookup ( "/com/sampleproject/SampleObject" );