-
- すべてのスーパー・インタフェース:
InterceptorOperations
- 既知のすべてのサブインタフェース:
ServerRequestInterceptor
public interface ServerRequestInterceptorOperations extends InterceptorOperations
サーバー側の要求インタセプタです。要求インタセプタは、特定の地点でORBを介して要求/応答シーケンスの流れを遮断し、サービスが要求情報を照会したり、クライアントとサーバーとの間でやりとりされるサービス・コンテキストを操作したりできるよう設計されています。 要求インタセプタの主な使用目的は、ORBサービスがクライアントとサーバーとの間でコンテキスト情報を転送できるようにすることです。 要求インタセプタには、クライアント側とサーバー側の2種類があります。
サーバー側のインタセプタを作成するには、ServerRequestInterceptorインタフェースを実装します。
- 関連項目:
ServerRequestInfo
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 void
receive_request(ServerRequestInfo ri)
オペレーション・パラメータなどのすべての情報が使用できるようになったあとで、インタセプタが要求情報を照会できるようにします。void
receive_request_service_contexts(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
内から呼び出されます。 DSIモデルでは、arguments
が呼び出されないこともあります。 また、set_exception
が呼び出されてから、arguments
が呼び出されることもあります。 ORBでは、arguments
またはset_exception
のどちらかを介してreceive_request
が1度だけ呼び出されることを保証しています。set_exception
を介して呼び出された場合、引数をリクエストすると、標準マイナー・コード1が設定されたNO_RESOURCES
がスローされます。この遮断点では、システム例外がスローされる場合があります。 その場合、ほかのインタセプタの
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
例外がスローされるのは適切ではありません。 このリクエストの「最大で1回」というセマンティックスが失われます。この遮断点からシステム例外をスローする場合、準拠しているインタセプタは
completion_status
セマンティックスに厳密に従います。 元の例外がシステム例外である場合、新しい例外のcompletion_status
は元の例外のそれと同じになります。 元の例外がユーザー例外である場合、新しい例外のcompletion_status
はCOMPLETED_YES
になります。- パラメータ:
ri
- 遮断される現在のリクエストに関する情報。- 例外:
ForwardRequest
- スローされた場合は、例外に指定されている新しいオブジェクトを使ってリクエストの再試行が行われることをORBに通知する。
-
send_other
void send_other(ServerRequestInfo ri) throws ForwardRequest
要求によって通常の応答または例外以外のものが返されたときに、インタセプタが利用可能な情報を照会できるようにします。 たとえば、要求によって再試行が生じる可能性があります(LOCATION_FORWARD
ステータスが設定されたGIOP応答が受信された場合など)。 この遮断点は、ターゲットの呼び出しと同じスレッド内で動作します。この遮断点では、システム例外がスローされる場合があります。 この例外がスローされた場合、ほかのインタセプタの
send_other
オペレーションは呼び出されません。 フロー・スタック内の残りのインタセプタが表示され、そのsend_exception
遮断点が呼び出されます。この遮断点では、
ForwardRequest
例外がスローされる場合もあります。 この例外がスローされた場合は、後続のインタセプタのsend_other
オペレーションが呼び出され、ForwardRequest
例外によって新しい情報が提供されます。この遮断点からシステム例外をスローする場合、準拠しているインタセプタは
completion_status
セマンティックスに厳密に従います。completion_status
はCOMPLETED_NO
になります。- パラメータ:
ri
- 遮断される現在のリクエストに関する情報。- 例外:
ForwardRequest
- スローされた場合は、例外に指定されている新しいオブジェクトを使ってリクエストの再試行が行われることをORBに通知する。
-
-