public interface ClientRequestInterceptorOperations extends InterceptorOperations
要求インタセプタは、特定の地点でORBを介して要求/応答シーケンスの流れを遮断し、サービスが要求情報を照会したり、クライアントとサーバーとの間でやりとりされるサービス・コンテキストを操作したりできるよう設計されています。要求インタセプタの主な使用目的は、ORBサービスがクライアントとサーバーとの間でコンテキスト情報を転送できるようにすることです。要求インタセプタには、クライアント側とサーバー側の2種類があります。
クライアント側のインタセプタを作成するには、ClientRequestInterceptor
インタフェースを実装します。
ClientRequestInfo
修飾子と型 | メソッドと説明 |
---|---|
void |
receive_exception(ClientRequestInfo ri)
例外が発生したことをインタセプタに通知します。
|
void |
receive_other(ClientRequestInfo ri)
要求によって通常の応答または例外以外のものが返されたときに、インタセプタが利用可能な情報を照会できるようにします。
|
void |
receive_reply(ClientRequestInfo ri)
サーバーから応答が返されてから制御がクライアントに返されるまで、インタセプタが応答に関する情報を照会できるようにします。
|
void |
send_poll(ClientRequestInfo ri)
TII (Time-Independent Invocation)ポーリング取得応答シーケンスの実行時にインタセプタが情報を照会できるようにします。
|
void |
send_request(ClientRequestInfo ri)
要求がサーバーに送信される前に、インタセプタが要求情報を照会したり、サービス・コンテキストを変更したりできるようにします。
|
destroy, name
void send_request(ClientRequestInfo ri) throws ForwardRequest
この遮断点では、システム例外がスローされる場合があります。その場合、ほかのインタセプタのsend_request
オペレーションは呼び出されません。フロー・スタック上のそれらのインタセプタが表示され、そのreceive_exception
遮断点が呼び出されます。この遮断点では、ForwardRequest
例外がスローされる場合もあります。この例外がスローされた場合、ほかのインタセプタのsend_request
オペレーションは呼び出されません。フロー・スタック上のそれらのインタセプタが表示され、そのreceive_other
遮断点が呼び出されます。
この遮断点からシステム例外をスローする場合、準拠しているインタセプタはcompletion_statusセマンティックスに厳密に従います。completion_status
はCOMPLETED_NO
になります。
ri
- 遮断される現在のリクエストに関する情報。ForwardRequest
- スローされた場合は、例外に指定されている新しいオブジェクトを使ってリクエストの再試行が行われることをORBに通知する。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
呼出しで受信する例外が変更されます。クライアントにスローされる例外は、インタセプタによって最後にスローされる例外となります。ただし、例外を変更するインタセプタがない場合は元の例外となります。
この遮断点では、ForwardRequest
例外がスローされる場合もあります。この例外がスローされた場合、ほかのインタセプタのreceive_exception
オペレーションは呼び出されません。フロー・スタック内の残りのインタセプタが表示され、そのreceive_other
遮断点が呼び出されます。
この例外のcompletion_status
がCOMPLETED_NO
の場合、この遮断点によってForwardRequest
例外がスローされるのは適切ではありません。このリクエストの「最大で1回」というセマンティックスが失われます。
この遮断点からシステム例外をスローする場合、準拠しているインタセプタはcompletion_status
セマンティックスに厳密に従います。元の例外がシステム例外である場合、新しい例外のcompletion_status
は元の例外のそれと同じになります。元の例外がユーザー例外である場合、新しい例外のcompletion_status
はCOMPLETED_YES
になります。
一部の条件のもとでは、どのポリシーが有効になっているかにより、COMM_FAILURE
などの例外によって要求の再試行が行われる可能性があります。この再試行はインタセプタに対する新しい要求となりますが、元の要求と再試行要求との間には1か所のみ相関関係があります。つまり、制御がクライアントに返されなかったため、元の要求と再試行要求のどちらも、要求のスコープが指定されたPortableInterceptor.Current
が同じになります。
ri
- 遮断される現在のリクエストに関する情報。ForwardRequest
- スローされた場合は、例外に指定されている新しいオブジェクトを使ってリクエストの再試行が行われることをORBに通知する。void receive_other(ClientRequestInfo ri) throws ForwardRequest
LOCATION_FORWARD
ステータスが設定されたGIOP応答が受信された場合など)。非同期呼出しでは、要求の直後に応答が返されることはありませんが、制御はクライアントに返され、終了遮断点が呼び出されます。
再試行では、有効になっているポリシーによって、再試行が指示されたときに新しい要求が続く場合と続かない場合があります。新しい要求が続く場合、この要求はインタセプタに対する新しい要求となりますが、元の要求と再試行要求との間には1か所のみ相関関係があります。つまり、制御がクライアントに返されなかったため、元の要求と再試行要求のどちらも、要求のスコープが指定されたPortableInterceptor.Current
が同じになります。
この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、ほかのインタセプタのreceive_other
オペレーションは呼び出されません。フロー・スタック内の残りのインタセプタが表示され、そのreceive_exception
遮断点が呼び出されます。
この遮断点では、ForwardRequest
例外がスローされる場合もあります。この例外がスローされた場合は、後続のインタセプタのreceive_other
オペレーションが呼び出され、ForwardRequest
例外によって新しい情報が提供されます。
この遮断点からシステム例外をスローする場合、準拠しているインタセプタはcompletion_status
セマンティックスに厳密に従います。completion_status
はCOMPLETED_NO
になります。ターゲットの呼出しが完了している場合、この遮断点は呼び出されません。
ri
- 遮断される現在のリクエストに関する情報。ForwardRequest
- スローされた場合は、例外に指定されている新しいオブジェクトを使ってリクエストの再試行が行われることをORBに通知する。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.