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

インタフェースExtendedRequest

  • すべてのスーパー・インタフェース:
    Serializable
    既知のすべての実装クラス:
    StartTlsRequest

    public interface ExtendedRequest
    extends Serializable
    このインタフェースは、RFC 2251で定義されたLDAPv3拡張操作の要求を表します。
         ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
                  requestName      [0] LDAPOID,
                  requestValue     [1] OCTET STRING OPTIONAL }
     
    この要求は、オブジェクト拡張子の文字列と任意のASN.1 BERでエンコードされた値で構成されます。

    このクラスのメソッドはサービス・プロバイダで使用され、LDAPサーバーに送るビットを構築します。 一般に、アプリケーションはこのインタフェースを実装するクラスだけを処理しており、特定の拡張操作の要求にこたえて必要な情報をクラスに提供します。 次にLDAPv3拡張操作を実行するために、クラスは引数として、LdapContext.extendedOperation()メソッドにパスされます。

    「時間取得」の拡張操作をサポートしたLDAPサーバーを例にとります。 それは、GetTimeRequestおよびGetTimeResponseのクラスを次のように指定します。

     public class GetTimeRequest implements ExtendedRequest {
         public GetTimeRequest() {... };
         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;
         public GetTimeResponse(String id, byte[] berValue, int offset,
             int length) throws NamingException {
             time =      ... // decode berValue to get time
         }
         public java.util.Date getDate() { return new java.util.Date(time) };
         public long getTime() { return time };
         ...
     }
    
    プログラムはこれらのクラスを次のように使用します。
     GetTimeResponse resp =
         (GetTimeResponse) ectx.extendedOperation(new GetTimeRequest());
     long time = resp.getTime();
    

    導入されたバージョン:
    1.3
    関連項目:
    ExtendedResponse, LdapContext.extendedOperation(javax.naming.ldap.ExtendedRequest)
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      ExtendedResponse createExtendedResponse​(String id, byte[] berValue, int offset, int length)
      この要求に対応する応答オブジェクトを作成します。
      byte[] getEncodedValue()
      LDAPの拡張操作要求のASN.1 BERでエンコードされた値を取得します。
      String getID()
      この要求のオブジェクトの識別子を検出します。
    • メソッドの詳細

      • getID

        String getID()
        この要求のオブジェクトの識別子を検出します。
        戻り値:
        LDAPのExtendedRequest.requestNameコンポーネントを示すnull以外のオブジェクト識別子の文字列。
      • getEncodedValue

        byte[] getEncodedValue()
        LDAPの拡張操作要求のASN.1 BERでエンコードされた値を取得します。 値が空の場合、nullが返されます。 この結果は、要求値のタグおよび長さを含むそのまま(raw)のBERバイトで表示されます。 ただし、要求のOIDは表示されません。 このメソッドは、LDAPサーバーに送られる拡張操作にビットを格納するため、サービス・プロバイダによって呼び出されます。
        戻り値:
        LDAPのExtendedRequest.requestValueコンポーネントのASN.1 BERでエンコードされた内容を示すnullの可能性があるバイト配列。
        例外:
        IllegalStateException - 要求が不十分または無効なデータおよび状態を含んでいるため、エンコードされた値が検出されなかった場合。
      • createExtendedResponse

        ExtendedResponse createExtendedResponse​(String id,
                                                byte[] berValue,
                                                int offset,
                                                int length)
                                         throws NamingException
        この要求に対応する応答オブジェクトを作成します。

        サービス・プロバイダが拡張操作の要求をLDAPサーバーに送ったあと、このサーバーから応答を受け取ります。 操作の要求が失敗すると、プロバイダはNamingExceptionをスローします。 操作が正常に終了すると、プロバイダはこのメソッドを応答に戻ったデータを使って呼び出します。 拡張操作の要求に任意のExtendedResponseインタフェースを実装するクラスを返すのが、このメソッドのジョブになります。

        たとえば、Start TLS拡張要求クラスは、Start TLS拡張応答の処理方法を認識する必要があります。 このために、ExtendedResponseを実装するクラスを作成します。

        パラメータ:
        id - 応答コントロールのnullの可能性があるオブジェクト識別子。
        berValue - nullの可能性のある応答コントロールのASN.1 BERでエンコードされた値。 この値は、応答値のタグと長さを含むraw BERバイトである。 ただし、応答OIDは含まない。
        offset - 使用するバイトのberValue内の開始位置。
        length - 使用するberValue内のバイト数。
        戻り値:
        null以外のオブジェクト。
        例外:
        NamingException - エラーのため拡張応答が作成できない場合。
        関連項目:
        ExtendedResponse