Java Authentication and Authorization Service
- 1 year ago
- 0
- 0
Java Naming and Directory Interface ( JNDI ) — это набор Java API , организованный в виде службы каталогов , который позволяет Java-клиентам открывать и просматривать данные и объекты по их именам. Как любой другой Java API, как набор интерфейсов , JNDI не зависит от нижележащей реализации. В дополнению к этому, он предоставляет реализацию (SPI), которая позволяет службам каталогов работать в паре с каким-либо фреймворком . Это может быть сервер, файл или база данных .
Концепция JNDI основана на двух основных определениях: ассоциация и контекст. Ассоциация ( англ. binding ) — это соответствие JNDI-имени и объекта. Контекст ( англ. context ) — это среда, в которой хранится набор ассоциаций между объектами и именами.
Сервисы Java RMI и Jakarta EE API используют подходы, описанные в JNDI API, для поиска объектов в сети. API предоставляет:
часть интерфейсов позволяет поддерживать практически любой тип именования каталогов, включая:
Для обращения к контексту и работы с 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");