模块 java.naming

类 ReferralException

所有已实现的接口:
Serializable
已知子类:
LdapReferralException

public abstract class ReferralException extends NamingException
此抽象类用于表示引用异常,它是为响应 referral 而生成的,例如 LDAP v3 服务返回的异常。

服务提供商通过为 getReferralInfo()getReferralContext()(以及适当的构造函数和/或相应的“设置”方法)提供实现来提供 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
参见:
  • 构造方法详细信息

    • ReferralException

      protected ReferralException(String  explanation)
      使用提供的解释构造 ReferralException 的新实例。所有其他字段都设置为空。
      参数:
      explanation - 有关此异常的其他详细信息。可以为空。
      参见:
    • ReferralException

      protected ReferralException()
      构造 ReferralException 的新实例。所有字段都设置为空。
  • 方法详情

    • getReferralInfo

      public abstract Object  getReferralInfo()
      检索与此引荐相关的信息(例如 URL)。该程序可以检查或向用户显示此信息以确定是否继续推荐,或确定需要提供额外信息以便继续推荐。
      返回:
      与此推荐相关的非空推荐信息。
    • getReferralContext

      public abstract Context  getReferralContext() throws NamingException
      检索继续该方法的上下文。无论是在上下文操作期间直接遇到引用,还是间接遇到引用,例如在搜索枚举期间,引用异常都应提供继续操作的上下文。引用上下文是使用引发 ReferralException 的上下文的环境属性创建的。

      要继续操作,客户端程序应使用与原始调用相同的参数重新调用该方法。

      返回:
      继续该方法的非空上下文。
      抛出:
      NamingException - 如果遇到命名异常。调用 retryReferral()skipReferral() 继续处理推荐。
    • getReferralContext

      public abstract Context  getReferralContext(Hashtable <?,?> env) throws NamingException
      使用环境属性检索继续方法的上下文。无论是在上下文操作期间直接遇到引用,还是间接遇到引用,例如在搜索枚举期间,引用异常都应提供继续操作的上下文。

      引用上下文是使用 env 作为其环境属性创建的。当调用者需要为引用上下文使用不同的环境属性时,应该使用此方法而不是无参数重载形式。它可能需要这样做,例如,当它需要向被引用的服务提供不同的身份验证信息以创建引用上下文时。

      要继续操作,客户端程序应使用与原始调用相同的参数重新调用该方法。

      参数:
      env - 检索引用上下文时使用的可能为空的环境。如果为 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 如果有更多推荐处理待处理;否则为假。
    • 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();
           }
         }
       }