Interested Article - Java Naming and Directory Interface

Java Naming and Directory Interface ( JNDI ) — это набор Java API , организованный в виде службы каталогов , который позволяет Java-клиентам открывать и просматривать данные и объекты по их именам. Как любой другой Java API, как набор интерфейсов , JNDI не зависит от нижележащей реализации. В дополнению к этому, он предоставляет реализацию (SPI), которая позволяет службам каталогов работать в паре с каким-либо фреймворком . Это может быть сервер, файл или база данных .

Концепция JNDI основана на двух основных определениях: ассоциация и контекст. Ассоциация ( англ. binding ) — это соответствие JNDI-имени и объекта. Контекст ( англ. context ) — это среда, в которой хранится набор ассоциаций между объектами и именами.

Архитектура

Архитектура JNDI

Сервисы Java RMI и Jakarta EE API используют подходы, описанные в JNDI API, для поиска объектов в сети. API предоставляет:

  • механизм ассоциации (связывания) объекта с именем;
  • интерфейс просмотра каталогов для выполнения общих запросов;
  • интерфейс событий, который позволяет определить клиентам, когда элементы каталога были изменены;
  • LDAP -расширение для поддержки дополнительных возможностей LDAP-сервисов.

часть интерфейсов позволяет поддерживать практически любой тип именования каталогов, включая:

Создание контекста

Для обращения к контексту и работы с JNDI требуется импорт и взаимодействие с API и классами из пакета javax.naming .

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

В простейшем случае, из метода main () создаётся начальный контекст. Тип именования каталогов указывается с помощью установки переменных среды . Один из вариантов их установки — использование объекта типа Hashtable , который передаётся в конструктор класса InitialContext :

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);

Извлечь ранее сохранённый объект из контекста возможно с помощью вызова Context.lookup() на объекте контекста :

Object obj = ctx.lookup("/com/sampleproject/SampleObject");

Примечания

  1. Oracle Documentation. . docs.oracle.com . docs.oracle.com. Дата обращения: 5 июня 2017. 23 мая 2017 года.
  2. . java-online.ru. Дата обращения: 5 июня 2017. 9 июня 2017 года.
  3. Oracle Documentation. . docs.oracle.com . docs.oracle.com. Дата обращения: 5 июня 2017. 24 мая 2017 года.
  4. . Java Platform SE 8 API Documentation . Дата обращения: 5 июня 2017. 17 марта 2017 года.
  5. . Oracle Tutorial . Дата обращения: 5 июня 2017. 31 мая 2017 года.
Источник —

Same as Java Naming and Directory Interface