Технология Клиент-Сервер 2002'1 |
|||||||
|
Служба имен является важным элементом распределенной системы. Ее задача – обеспечение доступа к тем или иным ресурсам по произвольным именам, которые сопоставляются с этими ресурсами в момент их "опубликования" в службе имен.
Естественно, такой важный технологический компонент не мог быть оставлен без внимания организациями и компаниями, которые разрабатывают универсальные технологии и создают их реализации. В рамках J2EE формализацией службы имен является JNDI (Java Naming and Directory Interface).
В компьютерной индустрии (еще до появления спецификации JNDI) были созданы различные реализации служб имен, предназначенные для решения тех или иных задач. Примером могут служить DNS (Domain Name System), которая обеспечивает доступ по именам к IP-адресам при работе в Internet, LDAP (Lightweight Directory Access Protocol) для доступа к различным сетевым и локальным ресурсам или обычная файловая система любой ОС (доступ к файлам и каталогам по их именам). Очевидно, что универсальная технология должна иметь обеспечивать возможность совместной работы с этими проверенными и широко используемыми реализациями.
Было принято разумное и достаточно стандартное решение: построить JNDI по "драйверному" принципу. Составными частями JNDI являются JNDI API – универсальный набор интерфейсов и методов Java, который позволяет обратиться к некоторой "обобщенной" службе имен, и JNDI SPI (Service Provider Interface), который позволяет подключить для использования практически любую реальную реализацию службы имен. Напрашивается аналогия с Java-технологией доступа к базам данных: разработчик, используя JDBC API, создает код, способный работать с любой базой данных – но только в том случае, если для нее создан JDBC-драйвер, который превращает универсальные вызовы JDBC API в конкретные команды работы с этой базой данных. Как и следовало ожидать, платой за универсальность является потеря возможности использования тех или иных отдельных возможностей конкретных реализаций служб имен.
Само название JNDI говорит о том, что в эту технологию входят две отдельные службы – имен (Naming Service) и каталогов (Directory Service).
Служба Имен обеспечивает сопоставление произвольного (возможно, с некоторыми ограничениями) имени с некоторым ресурсом и позволяет строить иерархию таких ассоциаций.
Служба Каталогов обеспечивает сопоставление с этим ресурсом произвольного списка атрибутов и их значений.
Немного упрощая, можно привести такую иллюстрацию: применительно к файловой системе задачей Службы Имен является поддержка имен файлов и каталогов и обеспечение доступа (по имени) к содержимому файлов, а Службы Каталогов – поддержка и управление дополнительными атрибутами для файлов и каталогов (признак вида файла, права доступа к нему, состояние, режим архивации и т.п.). Иногда говорят, что Служба Имен нужна для управления directory-объектами.
JNDI включает в себя:
javax.naming – интерфейсы, отвечающие за взаимодействие с Naming Service
javax.naming.directory – интерфейсы, отвечающие за взаимодействие с Directory Service (не используется в серверной компонентной модели EJB)
javax.naming.spi – интерфейсы, обеспечивающие "подключение" к JNDI конкретной реализации служб имен и каталогов (не используется в EJB и вообще не используется прикладным программистом).
javax.naming.event – определяет события, связанные с регистрацией некоторого ресурса (т.е. сопоставления с ним имени Службы Имен), отменой регистрации и т.п.;
javax.naming.ldap – позволяет учесть специфические особенности LDAP.
Здесь мы будем рассматривать только JNDI API, да и то только те ее возможности, которые могут быть полезны для программиста, использующего J2EE и CORBA. Это означает, что нам в первую очередь интересна Служба Имен – Naming Service.
Поскольку JNDI API предоставляет доступ к некой "обобщенной" службе имен, понятия, обсуждаемые в этом разделе, носят универсальный характер. Их сопоставление с конкретной реализацией будет выполнено на примере службы имен CORBA – Interoperable Naming Service (INS, ее также часто называют CosNamingService).
Давайте начнем с рассмотрения этих основных понятий...
Copyright © 1994-2016 ООО "К-Пресс"