Класс ReferralException
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- javax.naming.NamingException
-
- javax.naming.ReferralException
- Все реализованные интерфейсы:
- Serializable
- Прямые известные подклассы:
- LdapReferralException
public abstract class ReferralException extends NamingException
Этот абстрактный класс используется для представления исключения перенаправления, которое генерируется в ответ на перенаправление, например, возвращаемое серверами LDAP v3.
Поставщик сервиса предоставляет подкласс ReferralException, предоставляя реализации для getReferralInfo() и getReferralContext() (и соответствующие конструкторы и/или методы "set").
Следующий пример кода демонстрирует, как можно использовать 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
- См. также:
- Сериализованная форма
Поля
Поля, унаследованные от класса 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() Отбрасывает перенаправление, которое должно быть обработано. |
Методы, унаследованные от класса javax.naming.NamingException
appendRemainingComponent, appendRemainingName, getCause, getExplanation, getRemainingName, getResolvedName, getResolvedObj, getRootCause, initCause, setRemainingName, setResolvedName, setResolvedObj, setRootCause, toString, toString
Методы, унаследованные от класса java.lang.Throwable
addSuppressed, fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, printStackTrace, printStackTrace, printStackTrace, setStackTrace
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Конструкторы
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— Возможно, нулевая среда, которую следует использовать при получении контекста перенаправления. Если 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();
}
}
}
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.