JavaTM 2 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

此抽象類別用於表示一個參考異常,該異常是在回應某一參考(比如 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 是一個抽象類別。具體的實作確定其同步和序列化屬性。

傳遞給 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only