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

クラスReferralException

すべての実装されたインタフェース:
Serializable
直系の既知のサブクラス:
LdapReferralException

public abstract class ReferralException extends NamingException
このabstractクラスは、LDAP v3サーバーによって返される場合などの参照に応答して生成される参照例外を表すのに使用されます。

サービス・プロバイダは、getReferralInfo()getReferralContext() (および適切なコンストラクタまたは対応する「set」メソッドおよびその両方)の実装を提供して、ReferralExceptionのサブクラスを提供します。

ReferralExceptionの使用方法を示すコーディング例を次に示します。


      while (true) {
          try {
              bindings = ctx.listBindings(name);
              while (bindings.hasMore()) {
                  b = bindings.next();
                  ...
              }
              break;
          } catch (ReferralException e) {
              ctx = e.getReferralContext();
          }
      }
 

ReferralExceptionはabstractクラスです。 具象実装によって、その同期および直列化プロパティが決定されます。

getReferralContext()メソッドに渡される環境パラメータは呼出し側が所有します。 サービス・プロバイダは、オブジェクトを変更したり、そのオブジェクトに対する参照を保持しませんが、その複製に対する参照は保持します。

導入されたバージョン:
1.3
関連項目:
直列化された形式
  • コンストラクタの詳細

    • ReferralException

      protected ReferralException(String explanation)
      指定された説明を使用して、ReferralExceptionのインスタンスを新しく構築します。 ほかのフィールドはすべてnullに設定されます。
      パラメータ:
      explanation - この例外に関する追加の詳細情報。 nullも可。
      関連項目:
      Throwable.getMessage()
    • ReferralException

      protected ReferralException()
      ReferralExceptionのインスタンスを新しく構築します。 フィールドはすべてnullに設定されます。
  • メソッドの詳細

    • getReferralInfo

      public abstract Object getReferralInfo()
      この参照に関連する情報(URLなど)を取り出します。 プログラムでは、この情報を検証したり、またはこの情報をユーザーに示して、参照を継続するか、あるいは参照を継続するために追加情報を指定する必要があるかどうかを判別できます。
      戻り値:
      この参照に関連するnull以外の参照情報。
    • getReferralContext

      public abstract Context getReferralContext() throws NamingException
      メソッドを継続する時点のコンテキストを取り出します。 参照の発生が、コンテキストの操作中直接であっても、検索列挙中など間接的であっても、参照例外は操作を継続する時点のコンテキストを提供します。 参照コンテキストはReferralExceptionをスローするコンテキストの環境プロパティを使用して作成されます。

      操作を継続するには、クライアント・プログラムで、元の呼び出しと同じ引数を使用するメソッドを再度呼び出します。

      戻り値:
      メソッドを継続する時点のnull以外のコンテキスト。
      例外:
      NamingException - ネーミング例外が検出された場合。 retryReferral()またはskipReferral()のどちらかを呼び出して、参照の処理を継続する。
    • getReferralContext

      public abstract Context getReferralContext(Hashtable<?,​?> env) throws NamingException
      環境プロパティを使用するメソッドを継続する時点のコンテキストを取り出します。 参照の発生が、コンテキストの操作中直接であっても、検索列挙中など間接的であっても、参照例外は操作を継続する時点のコンテキストを提供します。

      参照コンテキストは、環境プロパティとしてenvを使用して作成されます。 このメソッドは、コール側が参照コンテキストに異なる環境プロパティを使用する必要がある場合に引数なしのオーバーロードされた形式の代わりに使用されます。 この方法を実行する必要があるのは、参照コンテキストを作成するために、参照されたサーバーに対して異なる認証情報を提供する必要がある場合です。

      操作を継続するには、クライアント・プログラムで、元の呼び出しと同じ引数を使用するメソッドを再度呼び出します。

      パラメータ:
      env - 参照コンテキストを取得するときに使用するnullの可能性がある環境。 nullの場合は、環境プロパティは使用されない。
      戻り値:
      メソッドを継続する時点のnull以外のコンテキスト。
      例外:
      NamingException - ネーミング例外が検出された場合。 retryReferral()またはskipReferral()のどちらかを呼び出して、参照の処理を継続する。
    • skipReferral

      public abstract boolean skipReferral()
      処理される参照を破棄します。 このメソッドの呼出しのあとに、ほかの参照の処理を継続させるgetReferralContextを呼び出す必要があります。 通常の使用法パターンを示すコードを次に示します。
        } catch (ReferralException e) {
            if (!shallIFollow(e.getReferralInfo())) {
                if (!e.skipReferral()) {
                    return;
                }
            }
            ctx = e.getReferralContext();
        }
       
      戻り値:
      保留中の参照処理が他にもある場合はtrue、そうでない場合はfalse。
    • retryReferral

      public abstract void retryReferral()
      現在処理中の参照を取り出します。 このメソッドの呼出しのあとに、現在の参照の取出しを許可するgetReferralContextを呼び出します。 通常の使用法パターンを示すコードを次に示します。
        } catch (ReferralException e) {
            while (true) {
                try {
                    ctx = e.getReferralContext(env);
                    break;
                } catch (NamingException ne) {
                    if (! shallIRetry()) {
                        return;
                    }
                    // modify environment properties (env), if necessary
                    e.retryReferral();
                }
            }
        }