java.lang.Object java.lang.Throwable java.lang.Exception javax.naming.NamingException javax.naming.ReferralException
public abstract class ReferralException
此抽象类用于表示一个引用异常,该异常是在响应某一引用(比如 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() 方法的环境属性归调用者所有。服务提供者不会修改该对象或保持对它的引用,但会保持对其副本的引用。
字段摘要 |
---|
从类 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() 放弃将要处理的引用。 |
从类 java.lang.Throwable 继承的方法 |
---|
fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, printStackTrace, printStackTrace, printStackTrace, setStackTrace |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
protected ReferralException(String explanation)
explanation
- 有关此异常的附加详细信息。可以为 null。
Throwable.getMessage()
protected ReferralException()
方法详细信息 |
---|
public abstract Object getReferralInfo()
public abstract Context getReferralContext() throws NamingException
要继续该操作,客户端程序应该使用与初始调用相同的参数重新调用该方法。
NamingException
- 如果遇到命名异常。调用
retryReferral() 或
skipReferral() 来继续处理这些引用。
public abstract Context getReferralContext(Hashtable<?,?> env) throws NamingException
引用上下文是通过使用 env 作为其环境属性来创建的。当调用者需要将不同的环境属性用于引用上下文时,应该使用此方法,而不是无参数的重载形式。例如,当需要为引用服务器提供不同的验证信息来创建引用上下文时,可能需要这样做。
要继续该操作,客户端程序应该使用与初始调用相同的参数重新调用该方法。
env
- 检索引用上下文时要使用的环境(可能为 null)。如果为 null,则不使用环境属性。
NamingException
- 如果遇到命名异常。调用
retryReferral() 或
skipReferral() 来继续处理这些引用。
public abstract boolean skipReferral()
getReferralContext
,以允许处理其他要继续的引用。以下代码片段展示了一个典型的使用模式。
} catch (ReferralException e) { if (!shallIFollow(e.getReferralInfo())) { if (!e.skipReferral()) { return; } } ctx = e.getReferralContext(); }
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(); } } }