TCPIP Handshake サンプルは、クライアントで想定される 3 方向ハンドシェークをインプリメントする方法を示します。このサンプルは、そのようなハンドシェークを使用して、要求が送信されてからサーバーがそれを処理し始めるまでの間に、クライアントがその要求をキャンセルできるようにする方法を示します。
また、応答メッセージを送信するための 3 方向ハンドシェークを使用して、トランザクションのある程度のサービス品質を保つこともできます。このサンプルの拡張によって、クライアントは、否定応答を送信するか、または応答メッセージに対する確認応答を送信しないことによって、サービスをロールバックすることができます。
このサンプルで呼び出される現行のサービス・インターフェースは非トランザクションのインターフェースです。 したがって、ロールバックを可能にする新規のサービス・インターフェースをセットアップする必要があります。 以下のいずれかのオプションを使用して、ロールバックを可能にするサービスをセットアップします。
例えば、SAP BAPI としてサービスをインプリメントする場合、SAPRequest ノードを使用して BAPI を呼び出します。 SAPRequest ノードを使用することによって、BAPI は必ずメッセージ・フローのトランザクション内に組み入れられます。 したがって、クライアントが否定応答を送信した場合に例外をスローすると、トランザクションがロールバックされることになります。
たとえば、WebSphere MQ を使用してサービスを呼び出す場合、つまり、invokeMQService サブフローを使用する場合に、TCPIP Handshake サンプルを拡張するためには、このサービスのある特定の実行をロールバックする必要があることを WebSphere MQ サーバー・アプリケーションに知らせるために使用できる 3 番目のキューを追加することができます。 Output ノード (Rollback) を sendReply サブフローに追加することができます。 TCPIPServerReceive ノードの Timeout ターミナルと CheckAckAndMakeConf ノードの Alternate ターミナルを、両方ともこの Rollback ノードに接続する必要があります。 invokeMQService サブフローは、メッセージを XML に変換するための変換ノードを使用して、この Rollback ノードを MQOutput ノードに接続します。
sendReply サブフロー
invokeMQService サブフロー
TCPIPMQVeneer フロー