|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
サーバ側の要求インタセプタです。
要求インタセプタは、特定の地点で ORB を介して要求/応答シーケンスの流れを遮断し、サービスが要求情報を照会したり、クライアントとサーバとの間でやりとりされるサービスコンテキストを操作したりできるよう設計されています。要求インタセプタの主な使用目的は、ORB サービスがクライアントとサーバとの間でコンテキスト情報を転送できるようにすることです。要求インタセプタには、クライアント側とサーバ側の 2 種類があります。
サーバ側のインタセプタを作成するには、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)
ターゲットオペレーションが呼び出されてから応答がクライアントに返されるまで、インタセプタが応答情報を照会したり、応答サービスコンテキストを変更したりできるようにします。 |
| インタフェース org.omg.PortableInterceptor.InterceptorOperations から継承したメソッド |
destroy, name |
| メソッドの詳細 |
public 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 に通知する
public 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 に通知するpublic void send_reply(ServerRequestInfo ri)
この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、他のインタセプタの send_reply オペレーションは呼び出されません。フロースタック内の残りのインタセプタが表示され、その send_exception 遮断点が呼び出されます。
この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status セマンティクスに厳密に従います。completion_status は COMPLETED_YES になります。
ri - 遮断される現在の要求に関する情報
public 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 に通知する
public 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 に通知する
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.