モジュール java.corba

インタフェース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)
      要求がサーバーに送信される前に、インタセプタが要求情報を照会したり、サービス・コンテキストを変更したりできるようにします。
    • メソッドの詳細

      • 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例外がスローされる場合もあります。 この例外がスローされた場合、ほかのインタセプタのreceive_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に通知する。