インタフェース | 説明 |
---|---|
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で定義された、StartTLSのLDAPv3拡張要求を実装します。StartTLSのオブジェクト識別子は1.3.6.1.4.1.1466.20037です。拡張要求の値は定義されていません。
|
StartTlsResponse |
このクラスは、Lightweight Directory Access Protocol (v3): Extension for Transport Layer Securityで定義された、StartTLSのLDAPv3拡張応答を実装します。StartTLSのオブジェクト識別子は1.3.6.1.4.1.1466.20037です。拡張応答の値は定義されていません。
|
UnsolicitedNotificationEvent |
このクラスは、LDAPサーバーから送信された非要請通知に応じてトリガーされたイベントを表します。
|
例外 | 説明 |
---|---|
LdapReferralException |
このabstractクラスは、LDAP参照例外を表すために使用されます。
|
このパッケージは、Java Naming and Directory InterfaceTM (JNDI)のディレクトリ操作を拡張します。 JNDIは、Javaプログラミング言語で記述されたアプリケーションにネーミングおよびディレクトリ機能を提供します。ほかのネームおよびディレクトリ・サービスの実装と独立して動作するように設計されています。新しいサービス、展開されつつあるサービス、すでに展開されているサービスなど、さまざまなサービスに対して共通の方法でアクセスすることができます。
このパッケージは、RFC 2251で定義されたLDAPv3の拡張操作とコントロールを処理するアプリケーションおよびサービス・プロバイダ向けのものです。このパッケージのコア・インタフェースはLdapContextで、これは拡張操作実行およびコントロール処理のコンテキストのメソッドを定義します。
このパッケージは、拡張操作の引数を表すExtendedRequestインタフェースおよび拡張操作の結果を表すExtendedResponseインタフェースを定義します。拡張応答は常に拡張要求とペアになりますが、拡張要求は必ずしも拡張応答とペアになる必要はありません。つまり、対応する拡張応答のない拡張要求を持てるということです。
アプリケーションは通常、これらのインタフェースを直接は処理しません。代わりに、これらのインタフェースを実装しているクラスが処理されます。アプリケーションはこれらのクラスを、IETFによって標準化された拡張操作のレパートリの一部として取得するか、ベンダー固有の拡張操作の場合はディレクトリ・ベンダーから取得します。要求クラスには、型保証された簡単な方法で引数を受け取るコンストラクタが必要です。また、応答クラスには、同様の方法で応答のデータを取得するアクセス・メソッドが必要です。要求および応答クラスでは、BER値のエンコードおよびデコードが行われます。
たとえば、LDAPサーバーが「時間取得」の拡張操作をサポートしているとします。それは、アプリケーションでこの機能が使用できるように、GetTimeRequestやGetTimeResponseなどのクラスを提供します。アプリケーションはこれらのクラスを次のように使います。
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; } }
アプリケーションは通常、このインタフェースを直接は処理しません。代わりに、このインタフェースを実装しているクラスを処理します。アプリケーションはコントロール・クラスを、IETFによって標準化されたコントロールのレパートリの一部として取得するか、あるいはベンダー固有のコントロールのディレクトリ・ベンダーから取得します。要求コントロール・クラスには、型保証されたユーザーが使いやすい方法で引数を受け入れるコンストラクタが必要で、応答コントロール・クラスには、型保証されたユーザーが使いやすい方法で応答のデータを取得するためのアクセス・メソッドが必要です。内部的には、要求コントロール・クラスおよび応答コントロール・クラスはBER値のエンコードおよびデコードを処理します。
たとえば、LDAPサーバーが「署名付き結果」の要求コントロールをサポートしているとします。このコントロールは、要求とともに送信されたとき、サーバーに、電子署名付きで操作結果を返すように要求します。それは、アプリケーションがこの機能を使えるよう、SignedResultsControlクラスを指定します。アプリケーションはこのクラスを次のように使います。
SignedResultsControlクラスは次のように定義できます。Control[] reqCtls = new Control[] {new SignedResultsControl(Control.CRITICAL)}; ectx.setRequestControls(reqCtls); NamingEnumeration enum = ectx.search(...);
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変更を取得しようとします。
ベンダーは次のようなChangeIDControlクラスおよびVendorXControlFactoryクラスを指定します。サービス・プロバイダは、LDAPサーバーから応答コントロールを受信したとき、VendorXControlFactoryを使用します。// Perform update Context ctx = ectx.createSubsubcontext("cn=newobj"); // Get response controls Control[] 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()); } } }
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 } }
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.