14

セッション Bean から 2 つの Web サービス メソッドを呼び出す例で、2 つのメソッドの呼び出しの間に例外がスローされた場合はどうなるでしょうか。Web サービスを呼び出さない場合、トランザクションはロールバックされ、害はありません。ただし、Web サービスはロールバックしません。もちろん、単一の Web サービスでも問題はあります。これは一般的な質問ですが、EJB セッション Bean に関係するソリューションに興味があります。

簡単でカスタマイズされた答えは、「実際の機能」メソッドごとに特別な「ロールバック メソッド」を Web サービスに追加することです。私が求めているのは、そうするための標準化された方法です。

4

3 に答える 3

15

多くの技術が進化していますが、問題は依然として十分に最先端であり、標準化プロセスでは完全に移植可能なソリューションがまだ提供されていません。

オプション 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

于 2009-01-13T16:16:27.180 に答える
6

私が知っているようなケースでは、Microsoft、BEA Systems、および IBM によって開発された Web Services-Coordination (WS-C) および Web Services-Transaction (WS-T) 仕様が使用されています。それを明確にするために、IBM が提供する Web サービス トランザクションと Web サービス トランザクション プロトコルの比較の記事読むことから始めることができます。

于 2009-01-13T16:47:47.103 に答える
2

実際には、通常、カスタムのロールバックメソッドだけでなく、カスタムのコミットメソッドも必要です。そうしないと、WS-BA標準に見られるような問題が発生します。

チェックアウトするだけ詳細な記事については、 http://www.atomikos.com/Publications/TryCancelConfirmを参照してください。そこに記載されている機能は、Atomikos ExtremeTransactionsで利用できます...この製品は、従来の「ACID」スタイルのWebサービストランザクションもサポートしています。

HTH

免責事項:私はAtomikosで働いています

于 2009-09-08T15:50:54.330 に答える