モジュール java.naming
パッケージ javax.naming.directory

インタフェースDirContext

すべてのスーパー・インタフェース:
Context
既知のすべてのサブインタフェース:
EventDirContext, LdapContext
既知のすべての実装クラス:
InitialDirContext, InitialLdapContext

public interface DirContext extends Context
ディレクトリ・サービス・インタフェースで、オブジェクトに関連付けられている属性のチェックおよび変更のメソッド、およびディレクトリ検索のメソッドを含みます。

名前

DirContextメソッドに引数として渡される各名前は、そのコンテキストに対して相対的です。 コンテキスト自体を指定する場合は、空の名前が使用されます。 名前パラメータはnullにできません。

ほとんどのメソッドには、NameパラメータおよびStringを使用するオーバーロードされたバージョンがあります。 これらのオーバーロードされたバージョンは、NameパラメータとStringパラメータが単に同じ名前の異なる表現である場合に、同じメソッドのオーバーロードされたバージョンが同じように動作するという点で同等です。 以下のメソッドの説明では、1つのバージョンだけがドキュメント化されています。 2番目のバージョンには、最初のバージョンへのリンクがあり、同じドキュメントが両方に適用されます。

Contextメソッドのname引数の解釈については、Contextを参照してください。 これらの同じルールが、DirContextメソッドのname引数に適用されます。

属性モデル

基本モデルには2つあり、関連付ける属性が異なります。 第1のモデルは、属性をDirContextオブジェクトと直接関連付けます。 このモデルでは、指定されたオブジェクトの属性操作は、(DirContextオブジェクトを返す)名前のルックアップとだいたい同等です。続いてDirContextオブジェクトで呼び出された属性操作で、呼出し側が空の名前を提供します。 属性はオブジェクトとともに格納されているとみなすことができます。しかし、これは実装時に格納されている必要があるということではありません。

第2のモデルは、属性をDirContextの名前(通常は原子名)と関連付けます。 このモデルでは、指定されたオブジェクトの属性操作は、指定されたオブジェクトの親DirContextの名前のルックアップとだいたい同等です。続いて親で呼び出された属性操作で、呼出し側が端末原子名を提供します。 属性は親DirContextに格納されているとみなされます(実装時に格納されている必要はありません)。 DirContextでないオブジェクトは、親がDirContextであれば属性を持つことができます。

JNDIはこれら両方のモデルをサポートします。 属性をどこに「格納」するかの決定は、個々のサービス・プロバイダによって異なります。 JNDIクライアントは、オブジェクトの属性がオブジェクトの一部として格納されるのか、あるいは親オブジェクト内に格納されてオブジェクトの名前と関連付けられるのかについて前提条件を作らない場合に、もっともセキュリティが高くなります。

属性型名

getAttributes()およびsearch()メソッドでは、属性名(strings)のリストを指定することで、返す属性を指定できます。 返ってきた属性は、指定した属性名と同じ名前を持っていない場合があります。 これは、ディレクトリによっては、サポートする機能がほかの属性を返すためです。 こうした機能には、属性のサブクラス化、属性名のシノニム、および属性言語コードが含まれます。

属性のサブクラス化では、属性はクラス階層で定義されます。 ディレクトリによっては、たとえば「名前」属性が「commonName」と「surName」を含むすべての名前に間連する属性のスーパー・クラスである可能性があります。 「名前」属性を要求すると、「commonName」と「surName」の両方が返ってくる可能性があります。

属性型のシノニムを使用して、ディレクトリは複数の名前を同じ属性に割りあてることができます。 たとえば、「cn」と「commonName」がともに同じ属性をさす可能性があります。 「cn」を要求すると「commonName」属性が返ってくる可能性があります。

ディレクトリによっては、属性の言語コードをサポートしているものもあります。 このようなディレクトリにたとえば「説明」属性を要求すると、次の属性がすべて返ってくる可能性があります。

  • description
  • 説明;lang-en
  • 説明;lang-de
  • 説明;lang-fr

操作属性

ディレクトリによっては、管理目的のディレクトリ・オブジェクトと間連付けられた属性である「操作属性」の概念を持つものもあります。 操作属性の1例は、オブジェクトのアクセス制御リストです。

getAttributes()およびsearch()メソッドでは、リクエストされたオブジェクトに関連付けられたすべての属性が、返す属性のリストとしてnullを指定することで返されるように指定できます。 返される属性には操作属性は含まれません 操作属性を検索するためには、操作属性に明示的に名前を付ける必要があります。

名前付きコンテキスト

ある種のメソッドでは、名前がコンテキストを解釈処理している必要があります(たとえば、単一レベルのコンテキストを検索する場合)。 このようなメソッドのドキュメントでは、名前付きコンテキストで名前パラメータを説明します。 これらのメソッドに対しては、指定されたオブジェクトがDirContextでない場合、NotContextExceptionがスローされます。 これらのメソッド以外は、指定されたオブジェクトがDirContextである必要はありません。

Parameters

メソッドにパラメータとして渡されたAttributesSearchControlsまたは配列オブジェクトは、サービス・プロバイダによって変更されません。 サービス・プロバイダでは、メソッドの結果の列挙、および生成された参照の処理を含むオペレーションの間に、そこへの参照が保持されます。 呼出し側は、この間にオブジェクトを変更することはできません。 メソッドによって返されるAttributesオブジェクトは、コール元によって所有されます。 あとで呼出し側がオブジェクトを変更することもありますが、サービス・プロバイダは変更しません。

例外

このインタフェースのすべてのメソッドによって、NamingExceptionまたはそのサブクラスのいずれかがスローされます。 各例外の詳細については、NamingExceptionおよびサブクラスを参照してください。

導入されたバージョン:
1.3
関連項目: