モジュール java.corba

インタフェースServerRequestInterceptorOperations

  • すべてのスーパー・インタフェース:
    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)
      ターゲット・オペレーションが呼び出されてから応答がクライアントに返されるまで、インタセプタが応答情報を照会したり、応答サービス・コンテキストを変更したりできるようにします。
    • メソッドの詳細

      • 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_requestarguments内から呼び出されます。 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_statusCOMPLETED_NOになります。

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

        void send_reply​(ServerRequestInfo ri)
        ターゲット・オペレーションが呼び出されてから応答がクライアントに返されるまで、インタセプタが応答情報を照会したり、応答サービス・コンテキストを変更したりできるようにします。 この遮断点は、ターゲットの呼び出しと同じスレッド内で動作します。

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

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

        パラメータ:
        ri - 遮断される現在のリクエストに関する情報。
      • send_exception

        void send_exception​(ServerRequestInfo ri)
                     throws ForwardRequest
        例外がクライアントにスローされる前に、インタセプタが例外情報を照会したり、応答サービス・コンテキストを変更したりできるようにします。 例外が発生すると、この遮断点が呼び出されます。 この遮断点は、ターゲットの呼び出しと同じスレッド内で動作します。

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

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

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

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

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