public interface ClientRequestInterceptorOperations extends InterceptorOperations
Перехватчик запроса разрабатывается, чтобы прервать поток последовательности запроса/ответа через ШАР в отдельных моментах так, чтобы службы могли запросить информацию о запросе и управлять контекстами службы, которые распространяются между клиентами и серверами. Основное использование Перехватчиков запроса должно позволить службам ШАРА передать контекстную информацию между клиентами и серверами. Есть два типа Перехватчиков запроса: сторона клиента и сторона сервера.
Чтобы записать клиентский Перехватчик, реализуйте ClientRequestInterceptor
интерфейс.
ClientRequestInfo
Модификатор и Тип | Метод и Описание |
---|---|
void |
receive_exception(ClientRequestInfo ri)
Указывает к перехватчику, что исключение произошло.
|
void |
receive_other(ClientRequestInfo ri)
Позволяет Перехватчику запрашивать информацию, доступную, когда запрос приводит к чему-то другому чем нормальный ответ или исключение.
|
void |
receive_reply(ClientRequestInfo ri)
Позволяет Перехватчику запрашивать информацию об ответе после того, как она возвращается из сервера и прежде, чем управление будет возвращено клиенту.
|
void |
send_poll(ClientRequestInfo ri)
Позволяет Перехватчику запрашивать информацию во время Независимого от времени Вызова (TII), опрос получает последовательность ответа.
|
void |
send_request(ClientRequestInfo ri)
Позволяет Перехватчику запрашивать информацию о запросе и изменять контекст службы прежде, чем запрос будет отправлен серверу.
|
destroy, name
void send_request(ClientRequestInfo ri) throws ForwardRequest
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики send_request
операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их receive_exception
точки перехвата вызывают. Эта точка перехвата может также бросить a ForwardRequest
исключение. Если Перехватчик выдает это исключение, никакие другие Перехватчики send_request
операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их receive_other
точки перехвата вызывают.
Совместимые Перехватчики должны должным образом следовать за completion_status семантикой, если они выдадут системное исключение от этой точки перехвата. completion_status
буду COMPLETED_NO
.
ri
- Информация о текущем прерываемом запросе.ForwardRequest
- Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.void send_poll(ClientRequestInfo ri)
С TII приложение может опросить относительно ответа на запрос, отправленный ранее клиентом опроса или некоторым другим клиентом. Об этом опросе сообщают Перехватчикам через send_poll
точка перехвата и ответ возвращаются через receive_reply
или receive_exception
точки перехвата. Если ответ не доступен прежде, чем тайм-аут опроса истечет, системное исключение TIMEOUT
бросается и receive_exception
вызывается с этим исключением.
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики send_poll
операции вызывают. Те Перехватчики на Стеке Потока выталкиваются и их receive_exception
точки перехвата вызывают.
Совместимые Перехватчики должны должным образом следовать completion_status
семантика, если они выдают системное исключение от этой точки перехвата. completion_status должен быть COMPLETED_NO
.
ri
- Информация о текущем прерываемом запросе.TIMEOUT
- брошенный, если ответ не доступен прежде, чем тайм-аут опроса истекаетvoid receive_reply(ClientRequestInfo ri)
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики receive_reply
операции вызывают. У остающихся Перехватчиков в Стеке Потока должен быть их receive_exception
точку перехвата вызывают.
Совместимые Перехватчики должны должным образом следовать completion_status
семантика, если они выдают системное исключение от этой точки перехвата. completion_status
буду COMPLETED_YES
.
ri
- Информация о текущем прерываемом запросе.void receive_exception(ClientRequestInfo ri) throws ForwardRequest
Эта точка перехвата может выдать системное исключение. Это имеет эффект изменения исключения, которое последовательные Перехватчики, вытолканные от Стека Потока, получают на их звонках receive_exception
. Исключение, выданное клиенту, будет последним исключением, выданным Перехватчиком, или исходным исключением, если никакой Перехватчик не изменит исключение.
Эта точка перехвата может также бросить a ForwardRequest
исключение. Если Перехватчик выдает это исключение, никакие другие Перехватчики receive_exception
операции вызывают. Остающиеся Перехватчики в Стеке Потока выталкиваются и имеют их receive_other
точку перехвата вызывают.
Если completion_status
из исключения не COMPLETED_NO
, тогда неуместно для этой точки перехвата бросить a ForwardRequest
исключение. Запрос s самое большее однажды семантика был бы потерян.
Совместимые Перехватчики должны должным образом следовать completion_status
семантика, если они выдают системное исключение от этой точки перехвата. Если исходное исключение является системным исключением, completion_status
из нового исключения будет то же самое как на оригинале. Если исходное исключение является пользовательским исключением, то completion_status
из нового исключения буду COMPLETED_YES
.
При некоторых условиях, в зависимости от того, что политики в действительности, исключение (такой как COMM_FAILURE
) может привести к повторной попытке запроса. В то время как эта повторная попытка является новым запросом относительно Перехватчиков, есть одна точка корреляции между исходным запросом и повторной попыткой: потому что управление не возвратилось к клиенту, PortableInterceptor.Current
и для исходного запроса и для запроса повторения то же самое.
ri
- Информация о текущем прерываемом запросе.ForwardRequest
- Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.void receive_other(ClientRequestInfo ri) throws ForwardRequest
LOCATION_FORWARD
состояние было получено); или на асинхронных вызовах, ответ сразу не следует за запросом, но управление должно возвратиться к клиенту, и конечную точку перехвата нужно вызвать. Для повторений, в зависимости от политик в действительности, новый запрос может или, возможно, не следует, когда повторная попытка была обозначена. Если новый запрос действительно следует, в то время как этот запрос является новым запросом относительно Перехватчиков, есть одна точка корреляции между исходным запросом и повторной попыткой: потому что управление не возвратилось к клиенту, определяющий контекст запрос PortableInterceptor.Current
и для исходного запроса и для запроса повторения то же самое.
Эта точка перехвата может выдать системное исключение. Если это делает, никакие другие Перехватчики receive_other
операции вызывают. Остающиеся Перехватчики в Стеке Потока выталкиваются и имеют их receive_exception
точку перехвата вызывают.
Эта точка перехвата может также бросить a ForwardRequest
исключение. Если Перехватчик выдает это исключение, последовательные Перехватчики receive_other
операции вызывают с новой информацией, предоставленной ForwardRequest
исключение.
Совместимые Перехватчики должны должным образом следовать completion_status
семантика, если они выдают системное исключение от этой точки перехвата. completion_status
буду COMPLETED_NO
. Если бы целевой вызов завершился, эту точку перехвата не вызвали бы.
ri
- Информация о текущем прерываемом запросе.ForwardRequest
- Если брошено, указывает к ШАРУ, что повторная попытка запроса должна произойти с новым объектом, данным в исключении.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92