|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
クライアント側の要求インタセプタです。
要求インタセプタは、特定の地点で 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)
要求がサーバに送信される前に、インタセプタが要求情報を照会したり、サービスコンテキストを変更したりできるようにします。 |
インタフェース org.omg.PortableInterceptor.InterceptorOperations から継承したメソッド |
destroy, name |
メソッドの詳細 |
public 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 に通知するpublic 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
- ポーリングのタイムアウトが過ぎていないのに応答が使用できない場合public void receive_reply(ClientRequestInfo ri)
この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、他のインタセプタの receive_reply
オペレーションは呼び出されません。フロースタック内の残りのインタセプタが表示され、その receive_exception
遮断点が呼び出されます。
この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status
セマンティクスに厳密に従います。completion_status
は COMPLETED_YES
になります。
ri
- 遮断される現在の要求に関する情報public void receive_exception(ClientRequestInfo ri) throws ForwardRequest
この遮断点では、システム例外がスローされる場合があります。この例外がスローされると、フロースタックから表示された後続のインタセプタがその receive_exception
呼び出しで受信する例外が変更されます。クライアントにスローされる例外は、インタセプタによって最後にスローされる例外となります。ただし、例外を変更するインタセプタがない場合は元の例外となります。
この遮断点では、
この例外の
この遮断点からシステム例外をスローする場合、準拠しているインタセプタは
一部の条件のもとでは、どのポリシーが有効になっているかにより、
ForwardRequest
例外がスローされる場合もあります。この例外がスローされた場合、他のインタセプタの send_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 に通知する
public 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 に通知する
|
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.