JavaTM Platform
Standard Ed. 6

org.omg.PortableInterceptor
インタフェース ClientRequestInterceptorOperations

すべてのスーパーインタフェース:
InterceptorOperations
既知のサブインタフェースの一覧:
ClientRequestInterceptor

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)
          要求がサーバーに送信される前に、インタセプタが要求情報を照会したり、サービスコンテキストを変更したりできるようにします。
 
インタフェース org.omg.PortableInterceptor.InterceptorOperations から継承されたメソッド
destroy, name
 

メソッドの詳細

send_request

void send_request(ClientRequestInfo ri)
                  throws ForwardRequest
要求がサーバーに送信される前に、インタセプタが要求情報を照会したり、サービスコンテキストを変更したりできるようにします。

この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、ほかのインタセプタの send_request オペレーションは呼び出されません。フロースタック上のそれらのインタセプタが表示され、その receive_exception 遮断点が呼び出されます。この遮断点では、ForwardRequest 例外がスローされる場合もあります。この例外がスローされた場合、ほかのインタセプタの send_request オペレーションは呼び出されません。フロースタック上のそれらのインタセプタが表示され、その receive_other 遮断点が呼び出されます。

この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status セマンティクスに厳密に従います。completion_statusCOMPLETED_NO になります。

パラメータ:
ri - 遮断される現在の要求に関する情報
例外:
ForwardRequest - スローされた場合は、例外に指定されている 新しいオブジェクトを使って要求の再試行が行われることを ORB に通知する

send_poll

void send_poll(ClientRequestInfo ri)
TII (Time-Independent Invocation) ポーリング取得応答シーケンスの実行時にインタセプタが情報を照会できるようにします。

TII を使用すると、アプリケーションは、ポーリングクライアントなどのクライアントによって以前に送信された要求に対する応答をポーリングできます。このポーリングは、send_poll 遮断点を介してインタセプタに報告され、receive_reply または receive_exception 遮断点を介して応答が返されます。ポーリングのタイムアウトが過ぎていないのに応答が使用できない場合は、システム例外 TIMEOUT がスローされ、この例外によって receive_exception が呼び出されます。

この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、ほかのインタセプタの send_poll オペレーションは呼び出されません。フロースタック上のそれらのインタセプタが表示され、その receive_exception 遮断点が呼び出されます。

この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status セマンティクスに厳密に従います。completion_status は COMPLETED_NO になります。

パラメータ:
ri - 遮断される現在の要求に関する情報
例外:
TIMEOUT - ポーリングのタイムアウトが過ぎていないのに 応答が使用できない場合

receive_reply

void receive_reply(ClientRequestInfo ri)
サーバーから応答が返されてから制御がクライアントに返されるまで、インタセプタが応答に関する情報を照会できるようにします。

この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、ほかのインタセプタの receive_reply オペレーションは呼び出されません。フロースタック内の残りのインタセプタが表示され、その receive_exception 遮断点が呼び出されます。

この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status セマンティクスに厳密に従います。completion_statusCOMPLETED_YES になります。

パラメータ:
ri - 遮断される現在の要求に関する情報

receive_exception

void receive_exception(ClientRequestInfo ri)
                       throws ForwardRequest
例外が発生したことをインタセプタに通知します。例外がクライアントにスローされる前にインタセプタがその例外の情報を照会できるようにします。

この遮断点では、システム例外がスローされる場合があります。この例外がスローされると、フロースタックから表示された後続のインタセプタがその receive_exception 呼び出しで受信する例外が変更されます。クライアントにスローされる例外は、インタセプタによって最後にスローされる例外となります。 ただし、例外を変更するインタセプタがない場合は元の例外となります。

この遮断点では、ForwardRequest 例外がスローされる場合もあります。この例外がスローされた場合、ほかのインタセプタの send_exception オペレーションは呼び出されません。フロースタック内の残りのインタセプタが表示され、その receive_other 遮断点が呼び出されます。

この例外の completion_statusCOMPLETED_NO の場合、この遮断点によって ForwardRequest 例外がスローされるのは適切ではありません。この要求の「最大で 1 回」というセマンティクスが失われます。

この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status セマンティクスに厳密に従います。元の例外がシステム例外である場合、新しい例外の completion_status は元の例外のそれと同じになります。元の例外がユーザー例外である場合、新しい例外の completion_statusCOMPLETED_YES になります。

一部の条件のもとでは、どのポリシーが有効になっているかにより、COMM_FAILURE などの例外によって要求の再試行が行われる可能性があります。この再試行はインタセプタに対する新しい要求となりますが、元の要求と再試行要求との間には 1 カ所だけ相関関係があります。つまり、制御がクライアントに返されなかったため、元の要求と再試行要求の PortableInterceptor.Current が同じになります。

パラメータ:
ri - 遮断される現在の要求に関する情報
例外:
ForwardRequest - スローされた場合は、例外に指定されている 新しいオブジェクトを使って要求の再試行が行われることを ORB に通知する

receive_other

void receive_other(ClientRequestInfo ri)
                   throws ForwardRequest
要求によって通常の応答または例外以外のものが返されたときに、インタセプタが利用可能な情報を照会できるようにします。たとえば、要求によって再試行が生じる可能性があります (LOCATION_FORWARD 状態が設定された GIOP 応答が受信された場合など)。 非同期呼び出しでは、要求の直後に応答が返されることはありませんが、制御はクライアントに返され、終了遮断点が呼び出されます。

再試行では、有効になっているポリシーによって、再試行が指示されたときに新しい要求が続く場合と続かない場合があります。新しい要求が続く場合、この要求はインタセプタに対する新しい要求となりますが、元の要求と再試行要求との間に 1 カ所だけ相関関係があります。つまり、制御がクライアントに返されなかったため、元の要求と再試行要求のどちらも、要求のスコープが指定された PortableInterceptor.Current が同じになります。

この遮断点では、システム例外がスローされる場合があります。この例外がスローされた場合、ほかのインタセプタの receive_other オペレーションは呼び出されません。フロースタック内の残りのインタセプタが表示され、その receive_exception 遮断点が呼び出されます。

この遮断点では、ForwardRequest 例外がスローされる場合もあります。この例外がスローされた場合は、後続のインタセプタの receive_other オペレーションが呼び出され、ForwardRequest 例外によって新しい情報が提供されます。

この遮断点からシステム例外をスローする場合、準拠しているインタセプタは completion_status セマンティクスに厳密に従います。completion_statusCOMPLETED_NO になります。ターゲットの呼び出しが完了している場合、この遮断点は呼び出されません。

パラメータ:
ri - 遮断される現在の要求に関する情報
例外:
ForwardRequest - スローされた場合は、例外に指定されている 新しいオブジェクトを使って要求の再試行が行われることを ORB に通知する

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。