目次 | 前へ | 次へ |
ディレクトリサービスは、ユーザー、マシン、ネットワーク、サービス、およびアプリケーションに関するさまざまな情報へのアクセスを提供することによって、イントラネットおよびインターネットにおいて重要な役割を果たします。その性質上、ディレクトリサービスには、人間が理解できる名前空間を提供するネーミング機能が組み込まれており、さまざまなエンティティーの処理および識別を容易に行うことができます。
企業のコンピューティング環境は通常、多くの場合は合成名前空間の異なる部分を表す、いくつかのネーミング機能で構成されています。たとえば、企業内のさまざまな組織のトップレベルのネーミング機能として、Internet Domain Name System (DNS) が使用される場合があります。一方、その組織自体は、LDAP、NDS、NIS などのディレクトリサービスを使用している可能性があります。ユーザーの観点から見ると、合成名で構成される 1 つの名前空間があるように見えます。合成名の例として、URL を挙げることができます。URL は、複数のネーミング機能の名前空間にまたがっています。ディレクトリサービスを使用するアプリケーションでは、このユーザーの観点をサポートしなければなりません。
多くの Java アプリケーション開発者は、特定のディレクトリまたはネームサービスの実装から独立しているだけでなく、複数のネーミング機能を経由したディレクトリオブジェクトへのシームレスなアクセスも可能にするディレクトリサービス API からメリットを得ることができます。実際、すべてのアプリケーションから独自のオブジェクトを名前空間に接続できます。このネーミング機能を使用して、Java アプリケーションから、任意の型のオブジェクトの検出および取り出しを行うことができます。
エンドユーザーは、ネットワーク内のオブジェクトの検出と識別を容易にする論理名前空間からメリットを得ることができます。
ディレクトリサービスの開発者は、クライアントを変更しなくても各実装を組み込むことができるサービスプロバイダ機能からメリットを得ることができます。
Java Naming and Directory Interface (JNDI) は、Java アプリケーションにディレクトリ機能とネーミング機能を提供する API です。JNDI は、特定のディレクトリサービス実装に依存しないように定義されています。したがって、さまざまなディレクトリに共通の方法でアクセスできます。
ここでは、JNDI のより一般的に使用される機能のいくつかを簡単に示す 2 つの例について説明します。
プリンタにアクセスするアプリケーションには、対応するプリンタオブジェクトが必要です。この対応付けは、次のようにして行います。
prt = (Printer) building7.lookup("puffin"); prt.print(document);
プリンタオブジェクトを構築するために必要な情報を検索する作業はすべて、JNDI が実行します。
組織のディレクトリに格納されているユーザーの電話番号を検索するアプリケーションは、単純に次のように記述できます。
String[] attrs = {"workPhone", "cellPhone", "faxNumber"}; bobsPhones = directory.getAttributes("cn=Bob, o=Widget, c=US", attrs);
「Widget」という組織に「Bob」という名前のユーザーが複数存在する場合は、次のようにすれば、アプリケーションで組織のディレクトリを検索して正しい「Bob」を見つけることができます。
bob = directory.search("o=Widget, c=US", "(cn=Bob)", searchctls);