Interfejs nazewnictwa i katalogów Java

Java Naming and Directory Interface ( JNDI ) to interfejs API języka Java dla usługi katalogowej , który umożliwia klientom oprogramowania Java wykrywanie i wyszukiwanie danych i zasobów (w postaci obiektów Java ) za pomocą nazwy. Podobnie jak wszystkie Java , które łączą się z systemami hosta, JNDI jest niezależny od podstawowej implementacji. Ponadto określa interfejs dostawcy usług (SPI), który umożliwia usługę katalogową implementacje, które mają być podłączone do frameworka. Informacje wyszukiwane przez JNDI mogą być dostarczane przez serwer, plik płaski lub bazę danych; wybór zależy od zastosowanej implementacji.

Typowe zastosowania JNDI obejmują:

  • łączenie aplikacji Java z zewnętrzną usługą katalogową (taką jak baza danych adresów lub serwer LDAP )
  • umożliwiając serwletowi Java wyszukiwanie informacji o konfiguracji dostarczonych przez hostujący kontener sieciowy

Tło

Java RMI i Java EE używają interfejsu API JNDI do wyszukiwania obiektów w sieci.

Interfejs API zapewnia:

  • mechanizm wiązania obiektu z nazwą
  • interfejs wyszukiwania katalogów, który umożliwia ogólne zapytania
  • interfejs zdarzeń, który pozwala klientom określić, kiedy wpisy w katalogu zostały zmodyfikowane
  • Rozszerzenia LDAP obsługujące dodatkowe możliwości usługi LDAP

Część SPI umożliwia obsługę praktycznie każdego rodzaju usług nazewniczych lub katalogowych, w tym:

Firma Sun Microsystems po raz pierwszy wydała specyfikację JNDI 10 marca 1997 r. Od 2006 r. Obecna wersja to JNDI 1.2.

Wyszukiwanie podstawowe

JNDI (Java Naming and Directory Interface) organizuje swoje nazwy w hierarchię. Nazwą może być dowolny ciąg, na przykład „com.example.ejb.MyBean”. Nazwa może być również obiektem implementującym Name ; jednak łańcuch jest najczęstszym sposobem nazywania obiektu. Nazwa jest powiązana z obiektem w katalogu poprzez przechowywanie obiektu lub odwołania do obiektu w usłudze katalogowej identyfikowanej przez nazwę.

Interfejs API JNDI definiuje kontekst, który określa, gdzie szukać obiektu. Początkowy kontekst jest zwykle używany jako punkt wyjścia.

W najprostszym przypadku należy utworzyć kontekst początkowy przy użyciu określonej implementacji i dodatkowych parametrów wymaganych przez implementację. Kontekst początkowy zostanie użyty do wyszukania nazwy. Początkowy kontekst jest analogiczny do korzenia lub wierzchołka drzewa katalogów systemu plików. Poniżej znajduje się przykład tworzenia początkowego kontekstu:

     




   


 Hashtable  contextArgs  =  nowy  Hashtable  <  String  ,  String  >  ();  // Najpierw musisz określić fabrykę kontekstu.  // W ten sposób dokonujesz wyboru między implementacją jboss  // a implementacją firmy Sun lub innych dostawców.  contextArgs  .  put  (  kontekst  .  INITIAL_CONTEXT_FACTORY  ,  "com.jndiprovider.TheirContextFactory"  );  // Kolejnym argumentem jest adres URL określający miejsce przechowywania danych:  contextArgs    




     .  put  (  kontekst  .  PROVIDER_URL  ,  "jndiprovider-database"  );  // (Może być konieczne podanie poświadczeń bezpieczeństwa)  // Następnie tworzysz kontekst początkowy  Context  myCurrentContext  =  new  InitialContext  (  contextArgs  ); 

Kontekst jest następnie używany do wyszukiwania wcześniej powiązanych nazw w tym kontekście. Na przykład:

      MyBean  myBean  =  (  MyBean  )  myCurrentContext  .  wyszukaj  (  "com.mydomain.MyBean"  ); 

Alternatywa dla powyższego kodu jest następująca:

Obiekt Context można również skonfigurować, dodając plik jndi.properties do ścieżki klasy zawierający nazwę klasy fabrycznej kontekstu początkowego i adres URL dostawcy. Powyższy kod zostanie zmniejszony, jak pokazano poniżej:


     // wystarczy utworzyć początkowy obiekt kontekstu, spróbuje odczytać plik jndi.properties ze ścieżki klasy.  Kontekst  mójBieżącyKontekst  =  nowy  KontekstPoczątkowy  (); 

Kontekst jest następnie używany do wyszukiwania wcześniej powiązanych nazw w tym kontekście. Na przykład:

      MyBean  myBean  =  (  MyBean  )  myCurrentContext  .  wyszukaj  (  "com.mydomain.MyBean"  ); 

Badawczy

Atrybuty mogą być dołączone do specjalnych wpisów zwanych katalogami. Katalogi umożliwiają wyszukiwanie obiektów według powiązanych z nimi atrybutów. Katalogi są rodzajem kontekstu; ograniczają przestrzeń nazw, podobnie jak struktura katalogów w systemie plików.

Zobacz też

  1. ^ „Java SE - podstawowe technologie - Java Naming and Directory Interface (JNDI)” . www.oracle.com . Źródło 2016-12-17 .
  2. ^ „Zasoby JNDI JAK TO ZROBIĆ” . Podręcznik użytkownika serwera Apache Tomcat 7 . Fundacja oprogramowania Apache . Źródło 21 stycznia 2014 r .
  3. ^ „Dostawca usług rejestru JNDI / RMI” . docs.oracle.com . Źródło 2016-12-17 .
  4. Bibliografia zewnętrzne sun.com . 1997-03-10. Zarchiwizowane od oryginału w dniu 08.09.2004. Linki
  5. ^ „Filtry wyszukiwania” . docs.oracle.com . Źródło 2016-12-17 .

Linki zewnętrzne