Интерфейс ClientRequestInterceptorOperations
- Все суперинтерфейсы:
- InterceptorOperations
- Все известные дочерние интерфейсы:
- ClientRequestInterceptor
public interface ClientRequestInterceptorOperations extends InterceptorOperations
Клиентский обработчик запросов.
Обработчик запросов предназначен для перехвата потока последовательности запрос/ответ через ORB в определенных точках, чтобы службы могли запросить информацию о запросе и манипулировать контекстами сервиса, которые передаются между клиентами и серверами. Основное использование обработчиков запросов — это возможность для служб ORB передавать информацию о контексте между клиентами и серверами. Существует два типа обработчиков запросов: клиентские и серверные.
Для написания клиентского обработчика реализуйте интерфейс ClientRequestInterceptor.
- См. также:
ClientRequestInfo
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
receive_exception(ClientRequestInfo ri) Указывает обработчику, что произошла ошибка. |
void |
receive_other(ClientRequestInfo ri) Позволяет обработчику запросить информацию, когда запрос приводит к результату, отличному от обычного ответа или ошибки. |
void |
receive_reply(ClientRequestInfo ri) Позволяет обработчику запросить информацию об ответе после возвращения с сервера и до возвращения управления клиенту. |
void |
send_poll(ClientRequestInfo ri) Позволяет обработчику запросить информацию во время опроса (Time-Independent Invocation, TII) последовательности получения ответа. |
void |
send_request(ClientRequestInfo ri) Позволяет обработчику запросить информацию о запросе и изменить контекст службы до отправки запроса на сервер. |
Методы, унаследованные от интерфейса org.omg.PortableInterceptor.InterceptorOperations
destroy, name Методы
send_request
void send_request(ClientRequestInfo ri)
throws ForwardRequest Позволяет обработчику запросить информацию о запросе и изменить контекст службы до отправки запроса на сервер.
В этой точке перехвата может быть выброшено системное исключение. Если это произойдет, другие операции обработчиков не будут вызваны. Обработчики в стеке потоков будут удалены, и их точки перехвата будут вызваны. Эта точка перехвата также может выбросить исключение ForwardRequest. Если обработчик выбросит это исключение, другие операции обработчиков не будут вызваны. Обработчики в стеке потоков будут удалены, и их точки перехвата будут вызваны.
Соответствующие обработчики должны правильно обрабатывать семантику completion_status, если они выбросят системное исключение из этой точки перехвата. completion_status должен быть COMPLETED_NO.
- Параметры:
-
ri- Информация о текущем перехватываемом запросе. - Исключения:
-
ForwardRequest- Если выброшено, указывает ORB на то, что запрос должен быть повторен с новым объектом, указанным в исключении.
send_poll
void send_poll(ClientRequestInfo ri)
Позволяет обработчику запросить информацию во время опроса (Time-Independent Invocation, TII) последовательности получения ответа.
При использовании TII приложение может опрашивать ответ на запрос, отправленный ранее клиентом опроса или каким-либо другим клиентом. Этот опрос сообщается обработчикам через точку перехвата send_poll, а ответ возвращается через точки перехвата receive_reply или receive_exception. Если ответ недоступен до истечения времени ожидания опроса, выбрасывается системное исключение TIMEOUT, и вызывается receive_exception с этим исключением.
В этой точке перехвата может быть выброшено системное исключение. Если это произойдет, другие операции обработчиков не будут вызваны. Обработчики в стеке потоков будут удалены, и их точки перехвата будут вызваны.
Соответствующие обработчики должны правильно обрабатывать семантику completion_status, если они выбросят системное исключение из этой точки перехвата. Значение completion_status должно быть COMPLETED_NO.
- Параметры:
-
ri- Информация о текущем перехватываемом запросе. - Исключения:
-
TIMEOUT- выбрасывается, если ответ недоступен до истечения времени ожидания опроса
receive_reply
void receive_reply(ClientRequestInfo ri)
Позволяет обработчику запросить информацию об ответе после его возвращения с сервера и до возвращения управления клиенту.
В этой точке перехвата может быть выброшено системное исключение. Если это произойдет, другие операции обработчиков не будут вызваны. Остальные обработчики в стеке потоков получат вызов их точки перехвата receive_exception.
Соответствующие обработчики должны правильно обрабатывать семантику completion_status, если они выбросят системное исключение из этой точки перехвата. Значение completion_status должно быть COMPLETED_YES.
- Параметры:
-
ri- Информация о текущем перехватываемом запросе.
receive_exception
void receive_exception(ClientRequestInfo ri)
throws ForwardRequest Указывает обработчику, что произошла ошибка. Позволяет обработчику запросить информацию об ошибке до её вывода клиенту.
В этой точке перехвата может быть выброшено системное исключение. Это повлияет на исключение, которое получат последующие обработчики, удаленные из стека потоков, при вызове receive_exception. Исключение, выброшенное клиенту, будет последним исключением, выброшенным обработчиком, или исходным исключением, если ни один обработчик его не изменил.
Эта точка перехвата также может выбросить исключение ForwardRequest. Если обработчик выбросит это исключение, другие операции обработчиков не будут вызваны. Остальные обработчики в стеке потоков будут удалены и получат вызов их точки перехвата receive_other.
Если completion_status исключения не COMPLETED_NO, то выброс исключения ForwardRequest в этой точке перехвата некорректен. Семантика запроса at-most-once будет потеряна.
Соответствующие обработчики должны правильно обрабатывать семантику completion_status, если они выбросят системное исключение из этой точки перехвата. Если исходное исключение — системное исключение, то completion_status нового исключения должно быть таким же, как и у исходного. Если исходное исключение — исключение пользователя, то completion_status нового исключения должно быть COMPLETED_YES.
В определенных условиях, в зависимости от действующих политик, исключение (например, COMM_FAILURE) может привести к повторной попытке запроса. Хотя эта повторная попытка является новым запросом с точки зрения обработчиков, существует одна точка корреляции между исходным запросом и повторной попыткой: поскольку управление не возвращено клиенту, PortableInterceptor.Current для обоих запросов (исходного и повторной попытки) совпадают.
- Параметры:
-
ri- Информация о текущем перехватываемом запросе. - Исключения:
-
ForwardRequest- Если выброшено, указывает ORB на то, что запрос должен быть повторен с новым объектом, указанным в исключении.
receive_other
void receive_other(ClientRequestInfo ri)
throws ForwardRequest Позволяет обработчику запросить информацию, когда запрос приводит к результату, отличному от обычного ответа или ошибки. Например, запрос может привести к повторной попытке (например, получен GIOP-ответ со статусом LOCATION_FORWARD) или при асинхронных вызовах ответ не следует сразу за запросом, но управление возвращается клиенту, и вызывается конечная точка перехвата.
Для повторных попыток, в зависимости от действующих политик, может или не может последовать новый запрос, если повторная попытка была указана. Если новый запрос последует, хотя это новый запрос с точки зрения обработчиков, существует одна точка корреляции между исходным запросом и повторной попыткой: поскольку управление не возвращено клиенту, PortableInterceptor.Current для обоих запросов (исходного и повторной попытки) совпадают.
В этой точке перехвата может быть выброшено системное исключение. Если это произойдет, другие операции обработчиков не будут вызваны. Остальные обработчики в стеке потоков получат вызов их точки перехвата receive_exception.
Эта точка перехвата также может выбросить исключение ForwardRequest. Если обработчик выбросит это исключение, операции последующих обработчиков будут вызваны с новой информацией, предоставленной исключением ForwardRequest.
Соответствующие обработчики должны правильно обрабатывать семантику completion_status, если они выбросят системное исключение из этой точки перехвата. Значение completion_status должно быть COMPLETED_NO. Если целевой вызов был завершён, эта точка перехвата не вызывалась бы.
- Параметры:
-
ri- Информация о текущем перехватываемом запросе. - Исключения:
-
ForwardRequest- Если выброшено, указывает ORB на то, что запрос должен быть повторен с новым объектом, указанным в исключении.
© 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.