1

最近、私は考えさせられた質問をされました。同じ質問についてコミュニティの意見を聞きたいです。

createCustomerメソッドを指定したCustomerEJBがあります。私のEJBはWebサービスとして公開されているため、createCustomerはその操作の1つです。

リクエストがcreateCustomerにヒットした場合、2つの操作を実行する必要があります

  1. データベースへのINSERTSQLクエリ。これは、入力要求で受信されたdbに特定のデータを追加している可能性があります。
  2. ファイルシステムに.txtなどのテキストファイルを作成します。

ここで問題となるのは、これら2つのタスクを1つのトランザクションに結合したいということです。1つのタスクが失敗した場合は、他のタスクもロールバックします。

Spring / Hibernateのような最新のテクノロジーについては言及せずに、トランザクション管理のために私が従うことができるアプローチは何ですか

私の考え:1。JTAを使用して、トランザクション境界を区切り、それに応じてコミットとロールバックを実行できます。JDBCはSQLタスク2に使用できます。DAOを使用できます

あなたの親切な提案/コメントを招待する

4

1 に答える 1

1

作成中のファイルをXA対応のJCAコネクタでラップし(既製のものがあるかどうかはわかりませんが、トランザクションをまだサポートしていないこのfsconnectorのみが見つかりました)、DBにXAドライバを使用する必要があります。トランザクション(ほとんどのDBはこれを処理できます)を実行してから、EJBをXAトランザクションでラップします(簡単なはずです)。

両方のリソースがXAトランザクションを処理できる限り、2フェーズコミットのメリットを享受できます。これが目的です。

于 2012-10-17T10:09:16.560 に答える