JavaTM 2 Platform
Standard Ed. 5.0

パッケージ javax.naming.ldap

LDAPv3 の拡張操作とコントロールをサポートします。

参照先:
          説明

インタフェースの概要
Control このインタフェースは、「RFC 2251」で定義されているように LDAPv3 コントロールを表示します。
ExtendedRequest このインタフェースは、「RFC 2251」で定義されている LDAPv3 拡張操作の要求を表します。
ExtendedResponse このインタフェースは、「RFC 2251」で定義されている LDAP 拡張操作の応答を表します。
HasControls このインタフェースは、オブジェクトが NamingEnumerations で返されるとき、コントロールを返すのに使用されます。
LdapContext このインタフェースは、LDAPv3 スタイルのコントロールを持つ操作と LDAPv3 スタイルの拡張操作を実行できるコンテキストを表します。
UnsolicitedNotification このインタフェースは、「RFC 2251」で定義された非要請通知を表します。
UnsolicitedNotificationListener このインタフェースは、UnsolicitedNotificationEvent を処理するためのものです。
 

クラスの概要
BasicControl このクラスは、Control インタフェースの基本的な実装を提供します。
ControlFactory この abstract クラスは、LDAPv3 コントロールの作成に使用するファクトリを表示します。
InitialLdapContext このクラスは、LDAPv3 スタイルの拡張操作および拡張コントロールを実行するための開始コンテキストです。
LdapName このクラスは、RFC 2253 に指定されている識別名を表します。
ManageReferralControl 参照オブジェクトおよびその他の特殊な LDAP オブジェクトを、通常の LDAP オブジェクトとして操作するように要求します。
PagedResultsControl 検索操作の結果を、指定したサイズごとにまとめて返すよう LDAP サーバに要求します。
PagedResultsResponseControl 1 セットの検索結果が終了したことを示します。
Rdn このクラスは、相対識別名、または識別名のコンポーネントである RDN (RFC 2253 を参照) を表します。
SortControl 検索操作の結果をソートしてから返すように LDAP サーバに要求します。
SortKey ソートキーと関連ソートパラメータです。
SortResponseControl 検索結果が要求どおりにソートされたかどうかを示します。
StartTlsRequest このクラスは、Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security に定義されている、LDAPv3 の StartTLS 拡張要求を実装します。
StartTlsResponse このクラスは、Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security に定義されている、LDAPv3 の StartTLS 拡張応答を実装します。
UnsolicitedNotificationEvent このクラスは、LDAP サーバから送信された非要請通知に応じてトリガされたイベントを表します。
 

例外の概要
LdapReferralException この abstract クラスは、LDAP 参照例外を表すために使用されます。
 

パッケージ javax.naming.ldap の説明

LDAPv3 の拡張操作とコントロールをサポートします。

このパッケージは、Java Naming and Directory InterfaceTM (JNDI) のディレクトリ操作を拡張します。JNDI は Java プログラミング言語で作成されたアプリケーションにネーミング機能およびディレクトリ機能を提供します。JNDI は、特定のネーミングまたはディレクトリサービス実装から独立して設計されています。このため、新しいサービスおよびすでに配置されているさまざまなサービスに、共通の方法でアクセスできます。

このパッケージは、RFC 2251 で定義された LDAPv3 の拡張操作とコントロールを処理するアプリケーションおよびサービスプロバイダ向けのものです。このパッケージのコアインタフェースは LdapContext で、これは拡張操作実行およびコントロール処理のコンテキストのメソッドを定義します。

拡張操作

このパッケージは、拡張操作の引数を表す ExtendedRequest インタフェースおよび拡張操作の結果を表す ExtendedResponse インタフェースを定義します。拡張応答は常に拡張要求とペアになりますが、拡張要求は必ずしも拡張応答とペアになる必要はありません。つまり、対応する拡張応答のない拡張要求を持てるということです。

アプリケーションは通常、これらのインタフェースを直接は処理しません。代わりに、これらのインタフェースを「実装している」クラスを処理します。アプリケーションはこれらのクラスを、 IETF によって標準化された拡張操作として取得するか、あるいはベンダー固有の拡張操作のディレクトリベンダーから取得します。要求クラスには、型保証されたユーザが使いやすい方法で引数を受け入れるコンストラクタが必要で、応答クラスには、型保証されたユーザが使いやすい方法で応答のデータを取得するためのアクセスメソッドが必要です。内部的には、要求クラスおよび応答クラスは BER 値の符号化および復号化を処理します。

たとえば、LDAP サーバが「時間取得」の拡張操作をサポートしている場合、LDAP サーバは、アプリケーションがこの機能を使えるよう、GetTimeRequestGetTimeResponse などのクラスを指定します。アプリケーションはこれらの機能を次のように使います。

GetTimeResponse resp = (GetTimeResponse) ectx.extendedOperation(new GetTimeRequest());long time = resp.getTime();

GetTimeRequest および GetTimeResponse クラスは次のように定義できます。

public class GetTimeRequest implements ExtendedRequest { // User-friendly constructor  public GetTimeRequest() { };
// Methods used by service providers public String getID() { return GETTIME_REQ_OID; } public byte[] getEncodedValue() { return null;  // no value needed for get time request } public ExtendedResponse createExtendedResponse( String id, byte[] berValue, int offset, int length) throws NamingException { return new GetTimeResponse(id, berValue, offset, length); }}public class GetTimeResponse() implements ExtendedResponse { long time; // called by GetTimeRequest.createExtendedResponse() public GetTimeResponse(String id, byte[] berValue, int offset, int length)  throws NamingException { // check validity of id long time =  ... // decode berValue to get time }
// Type-safe and User-friendly methods public java.util.Date getDate() { return new java.util.Date(time); } public long getTime() { return time; }
// Low level methods public byte[] getEncodedValue() { return // berValue saved; } public String getID() { return GETTIME_RESP_OID; }}

コントロール

このパッケージは、LDAPv3 コントロールを表す Control インタフェースを定義します。このインタフェースは、LDAP サーバに送信されるコントロール (要求コントロール) となるか、あるいは LDAP サーバによって返されるコントロール (応答コントロール) となります。拡張要求や拡張応答と異なり、必ずしも要求コントロールと応答コントロールの間でペアを組む必要はありません。要求コントロールを送信して応答コントロールが戻らないようにしたり、あるいは要求コントロールを送信しないで応答コントロールを受信したりできます。

アプリケーションは通常、このインタフェースを直接は処理しません。代わりに、このインタフェースを「実装している」クラスを処理します。アプリケーションはコントロールクラスを、標準化されたコントロールのレパートリの一部として IETF から取得するか、あるいはベンダー固有コントロールのディレクトリベンダーから取得します。要求コントロールクラスには、型保証されたユーザが使いやすい方法で引数を受け取るコンストラクタが必要で、応答コントロールクラスには、型保証されたユーザが使いやすい方法で応答のデータを取得するためのアクセスメソッドが必要です。内部的には、要求コントロールクラスおよび応答コントロールクラスは BER 値の符号化および復号化を扱います。

たとえば、LDAP サーバが「署名付き結果」の要求コントロールをサポートしているとします。このコントロールは、要求とともに送信されたとき、サーバに、電子署名付きで操作結果を返すように要求します。また、アプリケーションがこの機能を使用できるように、SignedResultsControl クラスを提供します。アプリケーションはこのクラスを次のように利用します。

Control[] reqCtls = new Control[] {new SignedResultsControl(Control.CRITICAL)};ectx.setRequestControls(reqCtls);NamingEnumeration enum = ectx.search(...);
SortControl クラスは次のように定義できます。
public class SignedResultsControl implements Control { // User-friendly constructor  public SignedResultsControl(boolean criticality) { // assemble the components of the request control };
// Methods used by service providers public String getID() { return // control's object identifier } public byte[] getEncodedValue() { return // ASN.1 BER encoded control value } ...}

サービスプロバイダが応答コントロールを受信すると、このプロバイダは ControlFactory クラスを使って、Control インタフェースを実装する特定のクラスを生成します。

LDAP サーバは、LDAP 操作とともに応答コントロールを返信でき、またリストや検索操作などによって返された列挙結果とともに返信できます。LdapContext は、LDAP 操作とともに送信された応答コントロールを取得するメソッド (getResponseControls()) を提供し、HasControls インタフェースは、列挙結果に関連した応答コントロールを取得するのに使用されます。

たとえば、変更完了にともない LDAP サーバが「ID 変更」コントロールを返信する場合、サーバは、アプリケーションがこの機能を使えるように ChangeIDControl クラスを指定します。アプリケーションは更新を行い、続いて ID 変更を取得しようとします。

// Perform updateContext ctx = ectx.createSubsubcontext("cn=newobj");
// Get response controlsControl[] respCtls = ectx.getResponseControls();if (respCtls != null) { // Find the one we want for (int i = 0;
 i < respCtls;
 i++) { if(respCtls[i] instanceof ChangeIDControl) {        ChangeIDControl cctl = (ChangeIDControl)respCtls[i];
            System.out.println(cctl.getChangeID());
 } }}
ベンダーは次のような ChangeIDControl クラスおよび VendorXControlFactory クラスを指定します。サービスプロバイダは、LDAP サーバから応答コントロールを受信したとき、VendorXControlFactory を使用します。
public class ChangeIDControl implements Control { long id;
// Constructor used by ControlFactory public ChangeIDControl(String OID, byte[] berVal) throws NamingException { // check validity of OID id = // extract change ID from berVal };
// Type-safe and User-friendly method public long getChangeID() { return id; }
// Low-level methods public String getID() { return CHANGEID_OID; } public byte[] getEncodedValue() { return // original berVal } ...}public class VendorXControlFactory extends ControlFactory { public VendorXControlFactory () { }
public Control getControlInstance(Control orig) throws NamingException { if (isOneOfMyControls(orig.getID())) {     ... 
            // determine which of ours it is and call its constructor       return (new ChangeIDControl(orig.getID(), orig.getEncodedValue())); } return null;  // not one of ours }}

パッケージの仕様

Java テクノロジの Web サイトでは次のドキュメントを参照できます。

導入されたバージョン:
1.3

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。