2012-01-24 11 views
2

一般的な状況があります。コンポーネント統合のスプリングトランザクション戦略

2つのJavaサービスコンポーネントが並行して開発されています。

AはBといいます。Aはキューからメッセージを取り出し、ビジネスルールの処理を行うJMSアプリケーションです。 Aはデータベースの永続性のためにBを使用します。 Bはすべてのデータベース操作を行います。

したがって、Bのメソッドは常にAから呼び出されます。 AはWebsphereUowTransactionManager(JtaTransactionManagerのサーバー固有のサブクラス)を使用して開発され、BはJpaTransactionManagerを使用して開発されます。 Bは宣言的モデル(@Transactionアノテーション)を使用していますが、プログラム型トランザクションモデルを使用しています(はい、必要です)。両方とも別のBean構成を使用して開発されました。

ここで、統合では、トランザクション例外に直面しています。私はそれがAとBのトランザクションモデル間のミスマッチによるものだと信じています。理論的には、Bはプログラム的なAの​​トランザクションコンテキストを使用します。これにより、Bの宣言モデルは冗長になります。

したがって、AとBを統合するための正しい組み合わせトランザクション戦略はどのようなものでしょうか?

私の理解 - Aはプログラム的トランザクションを使用するので、Bもプログラム的モデルを使用する必要があります。

+0

これら2つのトランザクションマネージャの間にアダプタはありませんか? – belgther

+0

どのようなアダプタですか?少し説明できますか? –

答えて

0

私はAとBの間のすべてのやりとりが単一のサービス(統一されたTX管理戦略)を通過するように、いくつかの仲介コンポーネントを追加します。 BTW:AにはJmsTransactionManagerを使用できます。Spring TX管理に関する詳細here