JavaTM Platform
Standard Ed. 6

javax.naming
クラス ReferralException

java.lang.Object
  上位を拡張 java.lang.Throwable
      上位を拡張 java.lang.Exception
          上位を拡張 javax.naming.NamingException
              上位を拡張 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
関連項目:
直列化された形式

フィールドの概要
 
クラス javax.naming.NamingException から継承されたフィールド
remainingName, resolvedName, resolvedObj, rootException
 
コンストラクタの概要
protected ReferralException()
          ReferralException のインスタンスを新しく構築します。
protected ReferralException(String explanation)
          指定された説明を使用して、ReferralException のインスタンスを新しく構築します。
 
メソッドの概要
abstract  Context getReferralContext()
          メソッドを継続する時点のコンテキストを取り出します。
abstract  Context getReferralContext(Hashtable<?,?> env)
          環境プロパティーを使用するメソッドを継続する時点のコンテキストを取り出します。
abstract  Object getReferralInfo()
          この参照に関連する情報 (URL など) を取り出します。
abstract  void retryReferral()
          現在処理中の参照を取り出します。
abstract  boolean skipReferral()
          処理される参照を破棄します。
 
クラス javax.naming.NamingException から継承されたメソッド
appendRemainingComponent, appendRemainingName, getCause, getExplanation, getRemainingName, getResolvedName, getResolvedObj, getRootCause, initCause, setRemainingName, setResolvedName, setResolvedObj, setRootCause, toString, toString
 
クラス java.lang.Throwable から継承されたメソッド
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, printStackTrace, printStackTrace, printStackTrace, setStackTrace
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

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();
                }
            }
        }
 


JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。