多くの技術が進化していますが、問題は依然として十分に最先端であり、標準化プロセスでは完全に移植可能なソリューションがまだ提供されていません。
オプション 1 として、Web サービス トランザクションを認識させることができます。もちろん、これはそれらを制御できることを前提としていますが、非トランザクション サービス用のトランザクション対応プロキシを作成することも場合によってはオプションです。
WS-AT および WS-BA プロトコルは、トランザクション Web サービスの主要な標準です。残念ながら、言語バインディングではなく、プロトコルのみを指定しています。つまり、プログラミング言語レベルの標準 API はありません。Java の場合、最も近いのは JSR-156 ですが、まだ準備ができていません。
次に問題は、EJB (つまり JTA/XA) トランザクションを WS トランザクションに結び付ける方法です。WS-AT と XA プロトコルで使用されるモデルは密接に関連しているため、これはプロトコル ブリッジによって実現できます。いくつかのアプリ サーバーは、これらの行だけで何かを提供します。JBoss は JavaOne で発表しました - http://anonsvn.jboss.org/repos/labs/labs/jbosstm/workspace/jhalliday/txbridge/BOF-4182.odpを参照してください
プロトコル ブリッジング テクニックは、XA データベース バックエンドなどを使用する EJB をトランザクション Web サービスとして公開できるようにするために、逆に使用することもできます。
ただし、2 フェーズ コミット トランザクションで使用されるロック モデルは、実際には、同じ制御ドメイン内の短期間のトランザクションにのみ適しています。サービスが同じ会社のデータセンターで実行されている場合は、おそらくそれで問題ありません。地理的であろうと管理上のものであろうと、より広範な配布については、そのような使用のために特別に設計された Web サービス トランザクション プロトコルである WS-BA を検討することをお勧めします。
WS-BA は、プログラミングがより困難な補償ベースのモデルを使用します。それは本質的にあなたが言及したテクニックに基づいています.サービスメソッドの効果は補償メソッドを呼び出すことによって元に戻されます. これを正しく理解するのは難しいかもしれませんが、JBoss のインターンが、最小限の労力で補償メソッドを定義し、自動的に駆動できるようにするかなり優れたアノテーション フレームワークを作成しました。標準化されていませんが、このアプローチを選択する場合はチェックする価値があります: http://www.jboss.org/jbosstm/baframework