Spec-Zone.ru › OpenJDK 8

Интерфейс ServerRequestInterceptorOperations

Все суперинтерфейсы:
InterceptorOperations
Все известные подинтерфейсы:
ServerRequestInterceptor

public interface ServerRequestInterceptorOperations
extends InterceptorOperations

Интерцептор запросов на стороне сервера.

Интерцептор запросов предназначен для перехвата потока запроса/ответа через ORB в определённых точках, чтобы службы могли запросить информацию о запросе и манипулировать контекстами сервиса, которые распространяются между клиентами и серверами. Основное использование интерцепторов запросов — это предоставление сервисам ORB возможности передачи информации о контексте между клиентами и серверами. Существует два типа интерцепторов запросов: клиентские и серверные.

Для написания серверного интерцептора необходимо реализовать интерфейс ServerRequestInterceptor.

См. также:
ServerRequestInfo

Методы

Модификатор и тип Метод и описание
void receive_request_service_contexts(ServerRequestInfo ri)

Позволяет интерцептору обрабатывать информацию о контексте сервиса.

void receive_request(ServerRequestInfo ri)

Позволяет интерцептору запросить информацию о запросе после того, как вся информация, включая параметры операции, станет доступна.

void send_exception(ServerRequestInfo ri)

Позволяет интерцептору запросить информацию об исключении и изменить контекст сервиса ответа перед тем, как исключение будет брошено клиенту.

void send_other(ServerRequestInfo ri)

Позволяет интерцептору запросить информацию, доступную, когда запрос приводит к результату, отличному от нормального ответа или исключения.

void send_reply(ServerRequestInfo ri)

Позволяет интерцептору запросить информацию об ответе и изменить контекст сервиса ответа после того, как целевая операция была вызвана и перед тем, как ответ будет возвращён клиенту.

Методы, унаследованные от интерфейса org.omg.PortableInterceptor.InterceptorOperations

destroy, name

Методы

receive_request_service_contexts

void receive_request_service_contexts(ServerRequestInfo ri)
                               throws ForwardRequest

Позволяет интерцептору обрабатывать информацию о контексте сервиса.

В этой точке перехвата интерцепторы должны получить информацию о контексте сервиса из входящего запроса и передать её в слоты PortableInterceptor.Current.

Эта точка перехвата вызывается до вызова менеджера серванта. Параметры операции пока недоступны. Эта точка перехвата может или не может выполняться в том же потоке, что и целевое вызов.

В этой точке перехвата может быть выброшено системное исключение. Если это произойдёт, другие операции интерцепторов receive_request_service_contexts не будут вызваны. Интерцепторы в стеке потока будут удалены, и будут вызваны их точки перехвата send_exception.

Эта точка перехвата также может выбросить исключение ForwardRequest. Если интерцептор выбросит это исключение, другие операции интерцепторов receive_request_service_contexts не будут вызваны. Интерцепторы в стеке потока будут удалены, и будут вызваны их точки перехвата send_other.

Соответствующие интерцепторы должны должным образом следовать семантике completion_status, если они выбросят системное исключение из этой точки перехвата. Значение completion_status должно быть COMPLETED_NO.

Параметры:
ri - Информация о текущем запросе, который перехватывается.
Исключения:
ForwardRequest - Если выброшено, указывает ORB на необходимость повторной попытки запроса с новым объектом, указанным в исключении.

receive_request

void receive_request(ServerRequestInfo ri)
              throws ForwardRequest

Позволяет интерцептору запросить информацию о запросе после того, как вся информация, включая параметры операции, станет доступна. Эта точка перехвата должна выполняться в том же потоке, что и целевое вызов.

В модели DSI, так как параметры становятся доступны только когда пользовательский код вызывает arguments, receive_request вызывается изнутри arguments. Возможно, arguments не вызывается в модели DSI. Цель может вызвать set_exception до вызова arguments. ORB гарантирует, что receive_request вызывается один раз, либо через arguments, либо через set_exception. Если он вызывается через set_exception, запрос аргументов приведёт к выбросу NO_RESOURCES со стандартным кодом ошибки 1.

В этой точке перехвата может быть выброшено системное исключение. Если это произойдёт, другие операции интерцепторов receive_request не будут вызваны. Интерцепторы в стеке потока будут удалены, и будут вызваны их точки перехвата send_exception.

Эта точка перехвата также может выбросить исключение ForwardRequest. Если интерцептор выбросит это исключение, другие операции интерцепторов receive_request не будут вызваны. Интерцепторы в стеке потока будут удалены, и будут вызваны их точки перехвата send_other.

Соответствующие интерцепторы должны должным образом следовать семантике completion_status, если они выбросят системное исключение из этой точки перехвата. Значение completion_status должно быть COMPLETED_NO.

Параметры:
ri - Информация о текущем запросе, который перехватывается.
Исключения:
ForwardRequest - Если выброшено, указывает ORB на необходимость повторной попытки запроса с новым объектом, указанным в исключении.

send_reply

void send_reply(ServerRequestInfo ri)

Позволяет интерцептору запросить информацию об ответе и изменить контекст сервиса ответа после того, как целевая операция была вызвана и перед тем, как ответ будет возвращён клиенту. Эта точка перехвата должна выполняться в том же потоке, что и целевое вызов.

В этой точке перехвата может быть выброшено системное исключение. Если это произойдёт, другие операции интерцепторов send_reply не будут вызваны. Остальные интерцепторы в стеке потока вызовут свою точку перехвата send_exception.

Соответствующие интерцепторы должны должным образом следовать семантике completion_status, если они выбросят системное исключение из этой точки перехвата. Значение completion_status должно быть COMPLETED_YES.

Параметры:
ri - Информация о текущем запросе, который перехватывается.

send_exception

void send_exception(ServerRequestInfo ri)
             throws ForwardRequest

Позволяет интерцептору запросить информацию об исключении и изменить контекст сервиса ответа перед тем, как исключение будет брошено клиенту. При возникновении исключения вызывается эта точка перехвата. Эта точка перехвата должна выполняться в том же потоке, что и целевое вызов.

В этой точке перехвата может быть выброшено системное исключение. Это имеет эффект изменения исключения, которое получают последующие интерцепторы, извлечённые из стека потока, при вызове send_exception. Исключение, брошенное клиенту, будет последним исключением, выброшенным интерцептором, или исходным исключением, если ни один интерцептор его не изменил.

В этой точке перехвата также может быть выброшено исключение ForwardRequest. Если интерцептор выбросит это исключение, другие операции интерцепторов send_exception не будут вызваны. Остальные интерцепторы в стеке потока вызовут свои точки перехвата send_other.

Если тип исключения completion_status не COMPLETED_NO, то выброс исключения ForwardRequest в этой точке перехвата некорректен. Семантика "не более одного раза" запроса будет потеряна.

Соответствующие интерцепторы должны должным образом следовать семантике completion_status, если они выбросят системное исключение из этой точки перехвата. Если исходное исключение является системным исключением, тип completion_status нового исключения будет таким же, как и у исходного. Если исходное исключение является пользовательским исключением, то тип completion_status нового исключения будет COMPLETED_YES.

Параметры:
ri - Информация о текущем запросе, который перехватывается.
Исключения:
ForwardRequest - Если выброшено, указывает ORB на необходимость повторной попытки запроса с новым объектом, указанным в исключении.

send_other

void send_other(ServerRequestInfo ri)
         throws ForwardRequest

Позволяет интерцептору запросить информацию, доступную, когда запрос приводит к результату, отличному от нормального ответа или исключения. Например, запрос может привести к повторной попытке (например, был получен GIOP-ответ со статусом LOCATION_FORWARD). Эта точка перехвата должна выполняться в том же потоке, что и целевое вызов.

В этой точке перехвата может быть выброшено системное исключение. Если это произойдёт, другие операции интерцепторов send_other не будут вызваны. Остальные интерцепторы в стеке потока вызовут свои точки перехвата send_exception.

Эта точка перехвата также может выбросить исключение ForwardRequest. Если интерцептор выбросит это исключение, последующие операции интерцепторов send_other будут вызваны с новой информацией, предоставленной исключением 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API