Интерфейс именования и каталогов Java

Интерфейс именования и каталогов Java ( JNDI ) — это API Java для службы каталогов , который позволяет клиентам программного обеспечения Java обнаруживать и искать данные и ресурсы (в форме объектов Java ) по имени. Как и все API Java , которые взаимодействуют с хост-системами, JNDI не зависит от базовой реализации. Кроме того, он определяет интерфейс поставщика услуг (SPI), который позволяет подключать реализации службы каталогов к фреймворку. [1] Информация, искомая через JNDI, может быть предоставлена ​​сервером, плоским файлом или базой данных; выбор зависит от используемой реализации.

Типичные области применения JNDI включают в себя:

  • подключение приложения Java к внешней службе каталогов (например, к базе данных адресов или серверу LDAP )
  • позволяет Java Servlet искать информацию о конфигурации, предоставленную хостинговым веб-контейнером [2]

Фон

API Java RMI и Java EE используют API JNDI для поиска объектов в сети. [3]

API обеспечивает:

  • механизм привязки объекта к имени
  • интерфейс поиска в каталоге, позволяющий выполнять общие запросы
  • интерфейс событий, позволяющий клиентам определять, когда были изменены записи каталога
  • Расширения LDAP для поддержки дополнительных возможностей службы LDAP

Часть SPI обеспечивает поддержку практически любого вида службы именования или каталогов, включая:

Sun Microsystems впервые выпустила спецификацию JNDI 10 марта 1997 года. [4] По состоянию на 2006 год [обновлять]текущей версией является JNDI 1.2.

Базовый поиск

JNDI (Java Naming and Directory Interface) организует свои имена в иерархию. Имя может быть любой строкой, например "com.example.ejb.MyBean". Имя также может быть объектом, реализующим интерфейс Name; однако строка является наиболее распространенным способом именования объекта. Имя привязывается к объекту в каталоге путем сохранения либо объекта, либо ссылки на объект в службе каталогов, идентифицированной по имени.

API JNDI определяет контекст, который указывает, где искать объект. Начальный контекст обычно используется в качестве отправной точки.

В простейшем случае начальный контекст должен быть создан с использованием конкретной реализации и дополнительных параметров, требуемых реализацией. Начальный контекст будет использоваться для поиска имени. Начальный контекст аналогичен корню или вершине дерева каталогов для файловой системы. Ниже приведен пример создания начального контекста:

Hashtable contextArgs = new Hashtable < String , String > ();     // Сначала необходимо указать фабрику контекста. // Вот как вы выбираете между реализацией jboss // и реализацией от Sun или других поставщиков. contextArgs . put ( Context . INITIAL_CONTEXT_FACTORY , "com.jndiprovider.TheirContextFactory" );   // Следующий аргумент — URL-адрес, указывающий, где находится хранилище данных: contextArgs . put ( Context . PROVIDER_URL , "jndiprovider-database" );   // (Возможно, вам также придется предоставить учетные данные безопасности)// Далее создается начальный контекст Context myCurrentContext = new InitialContext ( contextArgs );    

Затем контекст используется для поиска ранее связанных имен в этом контексте. Например:

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

Альтернатива приведенному выше коду выглядит следующим образом:

Объект Context также можно настроить, добавив файл jndi.properties в classpath, содержащий начальное имя класса фабрики контекста и URL-адрес поставщика. Приведенный выше код будет сокращен, как показано ниже:

//нужно просто создать начальный объект контекста, он попытается прочитать файл jndi.properties из classpath. Context myCurrentContext = new InitialContext ();    

Затем контекст используется для поиска ранее связанных имен в этом контексте. Например:

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

Идет поиск

Атрибуты могут быть прикреплены к специальным записям, называемым каталогами. Каталоги позволяют искать объекты по их связанным атрибутам. Каталоги являются типом контекста; они ограничивают пространство имен так же, как структура каталогов в файловой системе. [5]

Смотрите также

Ссылки

  1. ^ "Java SE - Основные технологии - Интерфейс именования и каталогов Java (JNDI)". www.oracle.com . Получено 17.12.2016 .
  2. ^ "JNDI Resources HOW-TO". Apache Tomcat 7 User Guide . Apache Software Foundation . Получено 21 января 2014 г. .
  3. ^ "Поставщик услуг реестра JNDI/RMI". docs.oracle.com . Получено 2016-12-17 .
  4. ^ "SUN MICROSYSTEMS, INC. ПРЕДСТАВЛЯЕТ API JAVA NAMING AND DIRECTORY INTERFACE". sun.com . 1997-03-10. Архивировано из оригинала 2004-09-08.
  5. ^ "Фильтры поиска". docs.oracle.com . Получено 2016-12-17 .
  • Страница Java SE 7 JNDI
  • Страница Java SE 8 JNDI
  • Справочная документация Java SE 8 JNDI javax.naming
  • Учебник JNDI
Взято с "https://en.wikipedia.org/w/index.php?title=Интерфейс_именования_и_каталогов_Java&oldid=1077629539"