Продолжается подписка на наши издания! Вы не забыли подписаться?

JNDI и CORBA Naming Service

Александр Цимбал

Служба имен является важным элементом распределенной системы. Ее задача – обеспечение доступа к тем или иным ресурсам по произвольным именам, которые сопоставляются с этими ресурсами в момент их "опубликования" в службе имен.

Естественно, такой важный технологический компонент не мог быть оставлен без внимания организациями и компаниями, которые разрабатывают универсальные технологии и создают их реализации. В рамках 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 включает в себя:

Здесь мы будем рассматривать только JNDI API, да и то только те ее возможности, которые могут быть полезны для программиста, использующего J2EE и CORBA. Это означает, что нам в первую очередь интересна Служба Имен – Naming Service.

Служба Имен

Поскольку JNDI API предоставляет доступ к некой "обобщенной" службе имен, понятия, обсуждаемые в этом разделе, носят универсальный характер. Их сопоставление с конкретной реализацией будет выполнено на примере службы имен CORBA – Interoperable Naming Service (INS, ее также часто называют CosNamingService).

Давайте начнем с рассмотрения этих основных понятий...

 

**полностью статью можно прочитать в печатной версии журнала

Copyright © 1994-2016 ООО "К-Пресс"