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, name
void 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