Module  java.naming
软件包  javax.naming

Class ReferralException

  • All Implemented Interfaces:
    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的上下文的环境属性创建的。

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

        结果
        用于继续该方法的非空上下文。
        异常
        NamingException - 如果遇到命名异常。 请致电retryReferral()skipReferral()以继续处理转介。
      • getReferralContext

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

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

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

        参数
        env - 检索引用上下文时使用的可能的空环境。 如果为空,则不会使用环境属性。
        结果
        用于继续该方法的非空上下文。
        异常
        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();
                  }
              }
          }