java.lang.Object
java.lang.Throwable
java.lang.Exception
javax.naming.NamingException
javax.naming.ReferralException
- 所有已实现的接口:
-
Serializable
- 直接已知的子类:
-
LdapReferralException
这个抽象类用于表示引用异常,这种异常是响应于LDAP v3服务器返回的引用而生成的。
服务提供者通过为ReferralException
提供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()
方法的环境参数由调用者拥有。服务提供者不会修改该对象或保留对它的引用,但可能会保留对它的克隆的引用。
- 自 JDK 版本:
- 1.3
- 参见:
-
Field Summary
Fields declared in class javax.naming.NamingException
remainingName, resolvedName, resolvedObj, rootException
-
Constructor Summary
ModifierConstructorDescriptionprotected
构造一个新的 ReferralException 实例。protected
ReferralException
(String explanation) 使用提供的解释构造一个新的 ReferralException 实例。 -
Method Summary
Modifier and TypeMethodDescriptionabstract Context
检索继续执行方法的上下文。abstract Context
getReferralContext
(Hashtable<?, ?> env) 使用环境属性检索继续执行方法的上下文。abstract Object
检索与此引用相关的信息(如 URL)。abstract void
重试当前正在处理的引用。abstract boolean
放弃即将处理的引用。Methods declared in class javax.naming.NamingException
appendRemainingComponent, appendRemainingName, getCause, getExplanation, getRemainingName, getResolvedName, getResolvedObj, getRootCause, initCause, setRemainingName, setResolvedName, setResolvedObj, setRootCause, toString, toString
Methods declared in class java.lang.Throwable
addSuppressed, fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, printStackTrace, printStackTrace, printStackTrace, setStackTrace
-
Constructor Details
-
ReferralException
使用提供的解释构造一个新的 ReferralException 实例。所有其他字段都设置为 null。- 参数:
-
explanation
- 关于此异常的额外细节。可以为 null。 - 参见:
-
ReferralException
protected ReferralException()构造一个新的 ReferralException 实例。所有字段都设置为 null。
-
-
Method Details
-
getReferralInfo
检索与此引用相关的信息(如 URL)。程序可以检查或显示此信息给用户,以确定是否继续引用,或者确定是否需要提供其他信息以便继续引用。- 返回:
- 与此引用相关的非 null 引用信息。
-
getReferralContext
检索继续执行方法的上下文。无论是在上下文操作期间直接遇到引用,还是间接遇到引用,例如在搜索枚举期间,引用异常都应提供一个继续操作的上下文。引用上下文是使用抛出 ReferralException 的上下文的环境属性创建的。为了继续操作,客户端程序应使用与原始调用相同的参数重新调用该方法。
- 返回:
- 继续执行方法的非 null 上下文。
- 抛出:
-
NamingException
- 如果遇到命名异常。调用retryReferral()
或skipReferral()
来继续处理引用。
-
getReferralContext
使用环境属性检索继续执行方法的上下文。无论是在上下文操作期间直接遇到引用,还是间接遇到引用,例如在搜索枚举期间,引用异常都应提供一个继续操作的上下文。引用上下文是使用
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(); } } }
-