13

ファイルの属性 (サイズ、更新時間など) をデータベースに保存します。したがって、問題はデータベースとファイルのトランザクションをどのように管理するかです。

Java EE 環境では、JTA はデータベース トランザクションを管理することしかできません。データベースの更新は成功したが、ファイルの操作に失敗した場合、ファイルのロールバック メソッドを作成する必要がありますか? また、EJB コンテナでのファイル操作は EJB 仕様に違反しています。

あなたの意見は何ですか?

4

4 に答える 4

5

ファイル システムなどの外部リソースへのアクセスは、理想的にはJCA コネクタを経由する必要があります。これについてはいくつかの投稿がありますが、ファイル システムへのトランザクション アクセス用のすぐに使用できる JCA コネクタを見つけられなかったので、次のようなものを書き始めました。

その他のプロジェクトについて:

複数のトランザクション参加者がいるとすぐに、アプリ. サーバーは実際に分散トランザクションを使用する必要があり、事態はさらに複雑になります。この複雑さを過小評価してはなりません (たとえば、データベースには分散トランザクション用の別のタイムアウト メカニズムがあります)。

考慮すべきもう 1 つの軽量なアプローチは、ファイル システムに書き込むSFSBを使用することです。SessionSynchronizationインターフェイスを実装するbeforeCompletionと、afterCompletionコールバックが取得されます。後者は、トランザクションがコミットまたはロールバックされたかどうかを示し、必要に応じてクリーンアップを行います。その後、トランザクション動作を実装できます。

于 2010-03-14T11:21:38.677 に答える
4

JTA は単なるデータベース用ではありません。リソースが XA トランザクションをサポートしていれば、他のリソースと一緒に長く使用できます。たとえば、XADiskは、ファイルシステムと XA トランザクションとの統合の 1 つを可能にします。したがって、解決しようとしてきたファイルシステムとデータベースの一貫性の問題も解決できます。

それが役立つことを願っています。

ニチン

于 2010-07-03T09:14:22.537 に答える
3

手動で。おそらく、これに対して補償トランザクションを作成する必要があります。

于 2010-03-12T06:40:17.603 に答える
0

トランザクショナル ファイル アクセスについては、commons-transaction を参照してください。参照する:

いずれにせよ、@ewernli が指摘したように、EJB コンテナーの外部にファイルを書き込むか、JCA コネクターと対話する必要があります。

于 2010-03-12T23:51:30.777 に答える