模块  java.naming
软件包  javax.naming

Class ReferralException

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

    public abstract class ReferralException
    extends NamingException
    此抽象类用于表示引用异常,该异常是为响应引用(例如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
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • ReferralException

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

        protected ReferralException()
        构造一个新的ReferralException实例。 所有字段都设置为null。
    • 方法详细信息

      • getReferralInfo

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

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

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

        结果
        要继续该方法的非null上下文。
        异常
        NamingException - 如果遇到命名异常。 请致电retryReferral()skipReferral()继续处理推荐。
      • getReferralContext

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

        使用env作为其环境属性创建引用上下文。 当调用者需要为引用上下文使用不同的环境属性时,应该使用此方法而不是no-arg重载形式。 例如,当需要向引用的服务器提供不同的身份验证信息以创建引用上下文时,可能需要执行此操作。

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

        参数
        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();
          }
         
        结果
        如果有更多的引用处理待处理; 否则是假的。
      • 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();
                  }
              }
          }