Интерфейс именования и каталогов Java
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2014 г. ) |
Интерфейс именования и каталогов Java ( JNDI Java ) — это API для службы каталогов , который позволяет программным клиентам Java обнаруживать и искать данные и ресурсы (в форме объектов Java ) по имени. Как и все API Java , взаимодействующие с хост-системами, JNDI не зависит от базовой реализации. Кроме того, он определяет интерфейс поставщика услуг (SPI), который позволяет службы каталогов к платформе. подключать реализации [ 1 ] Информация, полученная через JNDI, может быть предоставлена сервером, плоским файлом или базой данных; выбор зависит от используемой реализации.
Типичные варианты использования JNDI включают:
- подключение приложения Java к внешней службе каталогов (например, базе данных адресов или серверу LDAP )
- разрешение Java-сервлету искать информацию о конфигурации, предоставленную веб-контейнером хостинга [ 2 ]
Фон
[ редактировать ]API-интерфейсы Java RMI и Java EE используют API JNDI для поиска объектов в сети. [ 3 ]
API обеспечивает:
- механизм привязки объекта к имени
- интерфейс поиска в каталоге, который позволяет выполнять общие запросы
- интерфейс событий, который позволяет клиентам определять, когда записи каталога были изменены
- Расширения LDAP для поддержки дополнительных возможностей службы LDAP.
Часть SPI обеспечивает поддержку практически любого типа службы именования или каталогов, включая:
- ЛДАП
- DNS
- НИШ
- CORBA Служба имен
- файловая система
Sun Microsystems впервые выпустила спецификацию JNDI 10 марта 1997 года. [ 4 ] По состоянию на 2006 год [update], текущая версия — JNDI 1.2.
Базовый поиск
[ редактировать ]JNDI (Java Naming and Directory Interface) организует свои имена в иерархию. Именем может быть любая строка, например «com.example.ejb.MyBean». Имя также может быть объектом, реализующим Name
интерфейс; однако строка является наиболее распространенным способом имени объекта. Имя привязывается к объекту в каталоге путем сохранения объекта или ссылки на объект в службе каталогов, идентифицируемой этим именем.
JNDI API определяет контекст, который указывает, где искать объект. Исходный контекст обычно используется в качестве отправной точки.
В простейшем случае необходимо создать исходный контекст с использованием конкретной реализации и дополнительных параметров, необходимых для реализации. Исходный контекст будет использоваться для поиска имени. Начальный контекст аналогичен корню или вершине дерева каталогов файловой системы. Ниже приведен пример создания начального контекста:
Hashtable contextArgs = new Hashtable<String, String>();
// First you must specify the context factory.
// This is how you choose between jboss implementation
// vs. an implementation from Sun or other vendors.
contextArgs.put( Context.INITIAL_CONTEXT_FACTORY, "com.jndiprovider.TheirContextFactory" );
// The next argument is the URL specifying where the data store is:
contextArgs.put( Context.PROVIDER_URL, "jndiprovider-database" );
// (You may also have to provide security credentials)
// Next you create the initial context
Context myCurrentContext = new InitialContext(contextArgs);
Затем контекст используется для поиска ранее связанных имен в этом контексте. Например:
MyBean myBean = (MyBean) myCurrentContext.lookup("com.mydomain.MyBean");
Альтернатива приведенному выше коду выглядит следующим образом:
Объект Context также можно настроить, добавив файл jndi.properties в путь к классам, содержащий имя класса исходной фабрики контекста и URL-адрес поставщика. Приведенный выше код будет сокращен, как показано ниже:
//just need to create initial context object, it will try to read jndi.properties file from the classpath.
Context myCurrentContext = new InitialContext();
Затем контекст используется для поиска ранее связанных имен в этом контексте. Например:
MyBean myBean = (MyBean) myCurrentContext.lookup("com.mydomain.MyBean");
Идет поиск
[ редактировать ]Атрибуты могут быть прикреплены к специальным записям, называемым каталогами. Каталоги позволяют осуществлять поиск объектов по связанным с ними атрибутам. Каталоги — это тип контекста; они ограничивают пространство имен так же, как это делает структура каталогов в файловой системе. [ 5 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Java SE — Основные технологии — Интерфейс именования и каталогов Java (JNDI)» . www.oracle.com . Проверено 17 декабря 2016 г.
- ^ «Практическое руководство по ресурсам JNDI» . Руководство пользователя Apache Tomcat 7 . Фонд программного обеспечения Apache . Проверено 21 января 2014 г.
- ^ «Поставщик услуг реестра JNDI/RMI» . docs.oracle.com . Проверено 17 декабря 2016 г.
- ^ «SUN MICROSYSTEMS, INC. ПРЕДСТАВЛЯЕТ API ИМЕНОВАНИЯ JAVA И ИНТЕРФЕЙСА СПРАВОЧНИКОВ» . Sun.com . 10 марта 1997 г. Архивировано из оригинала 8 сентября 2004 г.
- ^ «Фильтры поиска» . docs.oracle.com . Проверено 17 декабря 2016 г.