Класс 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 свойства среды, которые необходимо использовать при получении контекста перенаправления. Если 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.naming/javax/naming/ReferralException.html