public interface ServerRequestInterceptorOperations extends InterceptorOperations
Перехватчик запроса разрабатывается, чтобы прервать поток последовательности запроса/ответа через ШАР в отдельных моментах так, чтобы службы могли запросить информацию о запросе и управлять контекстами службы, которые распространяются между клиентами и серверами. Основное использование Перехватчиков запроса должно позволить службам ШАРА передать контекстную информацию между клиентами и серверами. Есть два типа Перехватчиков запроса: сторона клиента и сторона сервера.
Чтобы записать серверный Перехватчик, реализуйте интерфейс 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)
Позволяет Перехватчику запрашивать информацию об ответе и изменять контекст службы ответа после того, как целевая работа была вызвана и прежде, чем ответ будет возвращен клиенту.
|
destroy, namevoid receive_request_service_contexts(ServerRequestInfo ri) throws ForwardRequest
В этой точке перехвата должны добраться Перехватчики, их контекстная информация службы от входящего запроса передают это PortableInterceptor.Current's слоты.
Эту точку перехвата вызывают прежде, чем менеджера слуги вызывают. Параметры работы еще не доступны в этой точке. Эта точка перехвата может или, возможно, не выполняется в том же самом потоке как целевой вызов.
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики receive_request_service_contexts операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их send_exception точки перехвата вызывают.
Эта точка перехвата может также бросить a ForwardRequest исключение. Если Перехватчик выдает это исключение, никакие другие Перехватчики receive_request_service_contexts операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их send_other точки перехвата вызывают.
Совместимые Перехватчики должны должным образом следовать completion_status семантика, если они выдают системное исключение от этой точки перехвата. completion_status будет COMPLETED_NO.
ri - Информация о текущем прерываемом запросе.ForwardRequest - Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.void receive_request(ServerRequestInfo ri) throws ForwardRequest
В модели DSI, так как параметры сначала доступны, когда пользовательский код вызывает arguments, receive_request вызывается изнутри arguments. Это возможно это arguments не вызывается в модели DSI. Цель может вызвать set_exception перед вызовом arguments. ШАР должен гарантировать это receive_request вызывается однажды, любой через arguments или через set_exception. Если это вызывают через set_exception, запрос параметров приведет к NO_RESOURCES будучи брошенным со стандартным незначительным кодом 1.
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики receive_request операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их send_exception точки перехвата вызывают.
Эта точка перехвата может также бросить a ForwardRequest исключение. Если Перехватчик выдает это исключение, никакие другие Перехватчики receive_request операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их send_other точки перехвата вызывают.
Совместимые Перехватчики должны должным образом следовать completion_status семантика, если они выдают системное исключение от этой точки перехвата. completion_status буду COMPLETED_NO.
ri - Информация о текущем прерываемом запросе.ForwardRequest - Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.void send_reply(ServerRequestInfo ri)
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики send_reply операции вызывают. У остающихся Перехватчиков в Стеке Потока должен быть их send_exception точку перехвата вызывают.
Совместимые Перехватчики должны должным образом следовать completion_status семантика, если они выдают системное исключение от этой точки перехвата. completion_status буду COMPLETED_YES.
ri - Информация о текущем прерываемом запросе.void send_exception(ServerRequestInfo ri) throws ForwardRequest
Эта точка перехвата может выдать системное исключение. Это имеет эффект изменения исключения, которое последовательные Перехватчики, вытолканные от Стека Потока, получают на их звонках send_exception. Исключение, выданное клиенту, будет последним исключением, выданным Перехватчиком, или исходным исключением, если никакой Перехватчик не изменит исключение.
Эта точка перехвата может также бросить a ForwardRequest исключение. Если Перехватчик выдает это исключение, никакие другие Перехватчики send_exception операции вызывают. У остающихся Перехватчиков в Стеке Потока должен быть их send_other точки перехвата вызывают.
Если completion_status из исключения не COMPLETED_NO, тогда неуместно для этой точки перехвата бросить a ForwardRequest исключение. Запрос самое большее однажды семантика был бы потерян.
Совместимые Перехватчики должны должным образом следовать completion_status семантика, если они выдают системное исключение от этой точки перехвата. Если исходное исключение является системным исключением, completion_status из нового исключения будет то же самое как на оригинале. Если исходное исключение является пользовательским исключением, то completion_status из нового исключения буду COMPLETED_YES.
ri - Информация о текущем прерываемом запросе.ForwardRequest - Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.void send_other(ServerRequestInfo ri) throws ForwardRequest
LOCATION_FORWARD состояние было получено). Эта точка перехвата должна выполниться в том же самом потоке как целевой вызов. Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики send_other операции вызывают. У остающихся Перехватчиков в Стеке Потока должен быть их send_exception точки перехвата вызывают.
Эта точка перехвата может также бросить a ForwardRequest исключение. Если Перехватчик выдает это исключение, последовательные Перехватчики send_other операции вызывают с новой информацией, предоставленной ForwardRequest исключение.
Совместимые Перехватчики должны должным образом следовать completion_status семантика, если они выдают системное исключение от этой точки перехвата. completion_status буду COMPLETED_NO.
ri - Информация о текущем прерываемом запросе.ForwardRequest - Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92