|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
参照先:
説明
インタフェースの概要 | |
---|---|
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 参照例外を表すために使用されます。 |
LDAPv3 の拡張操作とコントロールをサポートします。
このパッケージは、Java Naming and Directory InterfaceTM (JNDI) のディレクトリ操作を拡張します。JNDI は Java プログラミング言語で作成されたアプリケーションにネーミング機能およびディレクトリ機能を提供します。JNDI は、特定のネーミングまたはディレクトリサービス実装から独立して設計されています。このため、新しいサービスおよびすでに配置されているさまざまなサービスに、共通の方法でアクセスできます。
このパッケージは、RFC 2251 で定義された LDAPv3 の拡張操作とコントロールを処理するアプリケーションおよびサービスプロバイダ向けのものです。このパッケージのコアインタフェースは LdapContext で、これは拡張操作実行およびコントロール処理のコンテキストのメソッドを定義します。
このパッケージは、拡張操作の引数を表す ExtendedRequest インタフェースおよび拡張操作の結果を表す ExtendedResponse インタフェースを定義します。拡張応答は常に拡張要求とペアになりますが、拡張要求は必ずしも拡張応答とペアになる必要はありません。つまり、対応する拡張応答のない拡張要求を持てるということです。
アプリケーションは通常、これらのインタフェースを直接は処理しません。代わりに、これらのインタフェースを「実装している」クラスを処理します。アプリケーションはこれらのクラスを、 IETF によって標準化された拡張操作として取得するか、あるいはベンダー固有の拡張操作のディレクトリベンダーから取得します。要求クラスには、型保証されたユーザが使いやすい方法で引数を受け入れるコンストラクタが必要で、応答クラスには、型保証されたユーザが使いやすい方法で応答のデータを取得するためのアクセスメソッドが必要です。内部的には、要求クラスおよび応答クラスは BER 値の符号化および復号化を処理します。
たとえば、LDAP サーバが「時間取得」の拡張操作をサポートしている場合、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 クラスを提供します。アプリケーションはこのクラスを次のように利用します。
SortControl クラスは次のように定義できます。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 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()); } }}
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 サイトでは次のドキュメントを参照できます。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。