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

クラスInitialLdapContext

  • すべての実装されたインタフェース:
    Context, DirContext, LdapContext


    public class InitialLdapContext
    extends InitialDirContext
    implements LdapContext
    このクラスは、LDAPv3スタイルの拡張操作および拡張コントロールを実行するための開始コンテキストです。

    同期に関する詳細、初期コンテキストの作成方針については、javax.naming.InitialContextおよびjavax.naming.InitialDirContextを参照してください。

    要求コントロール

    InitialLdapContextである初期コンテキストを作成するときは、要求コントロールのリストを指定できます。 リスト内のコントロールは、コンテキスト、またはコンテキストから派生したコンテキストによって実行された暗黙的なLDAPバインド操作のための要求コントロールとして使用されます。 これらのコントロールを接続要求コントロールといいます。 コンテキストの接続要求コントロールを取得するには、getConnectControls()を使用します。

    初期コンテキスト・コンストラクタに指定された要求コントロールは、検索およびルックアップなどの後続のコンテキスト操作のコンテキスト要求コントロールとしては使用されません コンテキスト要求コントロールは、setRequestControls()を使って設定および変更されます。

    したがって、コンテキストに関連した要求コントロールには、接続要求コントロールとコンテキスト要求コントロールの2種類のセットを持つことがあります。 このことは、コンテキスト操作と暗黙的なLDAP「バインド」操作の両方に適用できない可能性のあるクリティカルなコントロールを送る必要のあるアプリケーションには必要です。 一般ユーザーのプログラムは次のように処理されます。

     InitialLdapContext lctx = new InitialLdapContext(env, critConnCtls);
     lctx.setRequestControls(critModCtls);
     lctx.modifyAttributes(name, mods);
     Controls[] respCtls =  lctx.getResponseControls();
    
    まず、初期コンテキストを作成するために、クリティカルなコントロール(critConnCtls)を指定します。次に、コンテキスト操作のためのコンテキストの要求コントロール(critModCtls)を設定します。 なんらかの理由のためlctxが再度サーバーに接続する必要がある場合は、critConnCtlsを使用します。 要求コントロールの詳細はLdapContextインタフェースを参照してください。

    サービス・プロバイダの実装者は、実装の詳細について、LdapContextのクラスの説明にあるサービス・プロバイダのセクションを参照するようにしてください。

    導入されたバージョン:
    1.3
    関連項目:
    LdapContext, InitialContext, InitialDirContext, NamingManager.setInitialContextFactoryBuilder(javax.naming.spi.InitialContextFactoryBuilder)
    • コンストラクタの詳細

      • InitialLdapContext

        public InitialLdapContext​()
                           throws NamingException
        環境プロパティまたは接続要求コントロールを使用しないで、初期コンテキストを構築します。 new InitialLdapContext(null, null)と同等です。
        例外:
        NamingException - ネーミング例外が発生した場合
      • InitialLdapContext

        public InitialLdapContext​(Hashtable<?,?> environment,
                                  Control[] connCtls)
                           throws NamingException
        環境プロパティおよび接続要求コントロールを使用して、初期コンテキストを構築します。 環境プロパティについては、javax.naming.InitialContextを参照してください。

        このコンストラクタでは、パラメータの変更または参照の保存は行われませんが、複製またはコピーが保存されます。 呼出し元は、environmentがコンストラクタに渡されたあと、そこに含まれている可変のキーや値を変更してはいけません。

        connCtlsは、基となるコンテキスト・インスタンスの接続要求コントロールとして使用されます。 詳細については、クラスの説明を参照してください。

        パラメータ:
        environment - 初期のDirContextを作成するために使用される環境。 nullは空の環境を示す。
        connCtls - 初期コンテキストの接続要求コントロール。 nullの場合、接続要求コントロールは使用されない。
        例外:
        NamingException - ネーミング例外が発生した場合
        関連項目:
        reconnect(javax.naming.ldap.Control[]), LdapContext.reconnect(javax.naming.ldap.Control[])
    • メソッドの詳細

      • extendedOperation

        public ExtendedResponse extendedOperation​(ExtendedRequest request)
                                           throws NamingException
        インタフェースからコピーされた説明: LdapContext
        拡張操作を実行します。 このメソッドを使用して、LDAPv3拡張操作をサポートします。
        定義:
        extendedOperation、インタフェース: LdapContext
        パラメータ:
        request - 実行されるnull以外の要求。
        戻り値:
        操作のnullの可能性がある応答。nullは操作によって応答が生成されなかったを示す。
        例外:
        NamingException - 拡張操作の実行中にエラーが発生した場合。
      • newInstance

        public LdapContext newInstance​(Control[] reqCtls)
                                throws NamingException
        インタフェースからコピーされた説明: LdapContext
        このコンテキストの新しいインスタンスを要求コントロールを使って生成します。 このメソッドは、マルチ・スレッドのアクセスのためにこのコンテキスト・インスタンスを新たに作成する便利な手法です。 たとえば、複数のスレッドで異なるのコンテキスト要求コントロールを使用する場合は、スレッドごとにこのメソッドを使用して、コンテキストの独自のコピーの取得、およびコンテキスト要求コントロールの設定と取得を行うことができます。このとき、他のスレッドと同期化する必要はありません。

        新規コンテキストには、このコンテキストと同じ環境プロパティ、接続要求コントロールがあります。 詳細については、クラスについての記述を参照してください。 このコンテキストと新規コンテキストの間で、同じネットワーク接続またはその他のリソースを共有することもできます。ただし、各コンテキストの間で競合が発生する場合は、共有できません。

        定義:
        newInstance、インタフェース: LdapContext
        パラメータ:
        reqCtls - 新しいコンテキストに使用するnullの可能性がある要求コントロール。 nullの場合は、要求コントロールを使用しないで初期化される。
        戻り値:
        null以外のLdapContextインスタンス。
        例外:
        NamingException - 新しいインスタンスの作成中にエラーが発生した場合。
        関連項目:
        InitialLdapContext
      • reconnect

        public void reconnect​(Control[] connCtls)
                       throws NamingException
        インタフェースからコピーされた説明: LdapContext
        指定されたコントロールとこのコンテキスト環境を使ってLDAPサーバーに再接続します。

        このメソッドは、LDAPのバインド操作を明示的に初期化する方法です。 このメソッドを使って、LDAPバインド操作に要求コントロールを設定したり、またはその操作によって返される応答コントロールを取得するために明示的にサーバーに接続できます。

        このメソッドは、このコンテキストのconnCtlsをその新しい接続要求コントロールとして設定します。 このコンテキストのコンテキスト要求コントロールは影響を受けません。 このメソッドが呼び出された後、以降の暗黙的な再接続はすべてconnCtlsを使用して実行されます。connCtlsはまた、このコンテキストから派生した新しいコンテキスト・インスタンスのための接続要求コントロールとしても使用されます。 これらの接続要求コントロールは、setRequestControls()の影響を受けません。

        実装の詳細については、実装側であるサービス・プロバイダは、クラスの「サービス・プロバイダ」セクションをよく読んでください。

        定義:
        reconnect、インタフェース: LdapContext
        パラメータ:
        connCtls - 使用するnullの可能性があるコントロール。 nullの場合、コントロールが使用されない。
        例外:
        NamingException - 再接続中にエラーが発生した場合。
        関連項目:
        LdapContext.getConnectControls(), LdapContext.newInstance(javax.naming.ldap.Control[])
      • getConnectControls

        public Control[] getConnectControls​()
                                     throws NamingException
        インタフェースからコピーされた説明: LdapContext
        このコンテキストに有効な接続要求コントロールを取得します。 コントロールは、JNDI実装が所有していて、不変です。 配列、コントロールのどちらも、呼出し側は変更できません。
        定義:
        getConnectControls、インタフェース: LdapContext
        戻り値:
        コントロールのnullの可能性がある配列。nullは、このコンテキストに対して接続コントロールが設定されていないことを示す。
        例外:
        NamingException - 要求コントロールの取得中にエラーが発生した場合。
      • setRequestControls

        public void setRequestControls​(Control[] requestControls)
                                throws NamingException
        インタフェースからコピーされた説明: LdapContext
        このコンテキストで引き続き呼び出されるメソッドに要求コントロールを設定します。 この要求コントロールは、JNDI実装が所有していて、不変です。 配列、コントロールのどちらも、呼出し側は変更できません。

        これにより、以前の要求コントロールがすべて削除され、このコンテキストで呼び出される以降のメソッドが使用するためのrequestControlsが追加されます。 このメソッドは、このコンテキストの接続要求コントロールには影響を与えません。

        requestControlsは、setRequestControls()の次の呼び出しまで有効です。 これ以上コンテキスト・メソッドに影響を与えたくない場合は、nullまたは空の配列を使用してsetRequestControls()を明示的に呼び出してコントロールを解除する必要があります。 このコンテキストに対してどのような要求コントロールが有効かを確認するには、getRequestControls()を使用します。

        定義:
        setRequestControls、インタフェース: LdapContext
        パラメータ:
        requestControls - 使用するnullの可能性があるコントロール。 nullの場合、コントロールが使用されない。
        例外:
        NamingException - 要求コントロールの設定中にエラーが発生した場合。
        関連項目:
        LdapContext.getRequestControls()
      • getRequestControls

        public Control[] getRequestControls​()
                                     throws NamingException
        インタフェースからコピーされた説明: LdapContext
        このコンテキストに有効な要求コントロールを取得します。 この要求コントロールは、JNDI実装が所有していて、不変です。 配列、コントロールのどちらも、呼出し側は変更できません。
        定義:
        getRequestControls、インタフェース: LdapContext
        戻り値:
        コントロールのnullの可能性がある配列。nullは、このコンテキストに対して要求コントロールが設定されていないことを示す。
        例外:
        NamingException - 要求コントロールの取得中にエラーが発生した場合。
        関連項目:
        LdapContext.setRequestControls(javax.naming.ldap.Control[])
      • getResponseControls

        public Control[] getResponseControls​()
                                      throws NamingException
        インタフェースからコピーされた説明: LdapContext
        このコンテキストで最後に呼び出されたメソッドの結果として生成された応答コントロールを取得します。 この応答コントロールは、JNDI実装が所有していて、不変です。 配列、コントロールのどちらも、呼出し側は変更できません。

        これらの応答コントロールには、正常に終了した操作または失敗した操作によって生成されたものがあります。

        応答コントロールを返す可能性のあるコンテキスト・メソッドが呼び出されると、以前のメソッド呼び出しからの応答コントロールがクリアされます。getResponseControls()は、コンテキスト・メソッドで使用されるLDAP操作によって生成されたすべての応答コントロールをLDAPサーバーから受信した順序で返します。 getResponseControls()を呼び出しても、応答コントロールはクリアされません。 コントロールを返すことができる次のコンテキスト・メソッドが呼び出されるまで何度でも呼び出したり、同じコントロールを戻したりすることが可能です。

        定義:
        getResponseControls、インタフェース: LdapContext
        戻り値:
        nullの可能性があるコントロールの配列。 nullの場合、このコンテキストで呼び出された以前のメソッドはコントロールを生成していない。
        例外:
        NamingException - 応答コントロールの取得中にエラーが発生した場合。