1.4.5. WS-AtomicTransaction の使用
wsat-simple
クイックスタートは、Red Hat JBoss Enterprise Application Platform にデプロイするために WAR アーカイブにバンドルされた WS-AT(WS-AtomicTransaction) 対応の JAX-WSWeb サービスのデプロイを示しています。
レストランが提供する予約のための Web サービスです。このサービスでは、Atomic Transaction 内で予約を行うことができます。この例は、WS-AT 対応の Web サービスを実装するための基本を示しています。より高度な機能を示すことは、このクイックスタートの範囲を超えています。特に以下を確認します。
- サービスは、障害が発生した場合の回復をサポートするために必要なフックを実装していません。
- また、トランザクションバックエンドリソースを利用しません。
- プロトコルに参加する Web サービスは 1 つだけです。WS-AT は 2PC 調整プロトコルであるため、複数の参加者がいるシナリオに最適です。
より完全な例については、Narayana プロジェクトに付属している XTS デモンストレーターアプリケーションを参照してください。http://www.jboss.org/narayana。
また、WS-Atomic Transaction を理解していることを前提としています。詳細については、Narayana プロジェクトに付属している XTS ドキュメントを参照してください。このドキュメントは、http://www.jboss.org/narayana/documentation/4174_Final からダウンロードできます。
このアプリケーションは、WAR アーカイブ内にデプロイされた単一の JAX-WS Web サービスで設定されています。これは、JBoss Arquillian 対応の JUnit テストでテストされます。
org.jboss.as.quickstarts.wsat.simple.ClientTest#testCommit()
メソッドを実行すると、次の手順が実行されます。
- 新しい Atomic Transaction (AT) がクライアントによって作成されます。
- WS-AT 対応の Web サービスでの操作は、クライアントによって呼び出されます。
- WS クライアントハンドラーチェーンの JaxWSHeaderContextProcessor は、WS-AT コンテキストを送信 SOAP メッセージに挿入します。
- サービスが SOAP 要求を受信すると、ハンドラーチェーン内の JaxWSHeaderContextProcessor が WS-AT コンテキストを検査し、要求をこの AT に関連付けます。
- Web サービス操作が呼び出されます。
- 参加者はこの AT に参加しています。これにより、Web サービスロジックがコミットやロールバックなどのプロトコルイベントに応答できるようになります。
- サービスはビジネスロジックを呼び出します。この場合、レストランへの予約となります。
- バックエンドリソースが準備されます。これにより、コーディネーターから指示されたときに、バックエンドリソースが変更を元に戻したり永続的にしたりできるようになります。
- その後、クライアントは AT をコミットするかロールバックするかを決定できます。クライアントがコミットすることを決定した場合、コーディネーターは 2PC プロトコルを開始します。参加者がロールバックすることを決定した場合、すべての参加者はロールバックするように指示されます。
クライアントが AT をロールバックすることを決定した場合に何が起こるかを示す別のテストがあります。