私はJTAを使い始めたばかりであり、その基盤となるトランザクションマネージャです。誰もがこれらのそれぞれの長所/短所を説明できますか?タイトルに記載しなかった他の人も自由に追加してください。
また、主要なアプリケーションサーバー(WebSphere、JBoss、Glassfish)には、独自のJTA準拠のトランザクションマネージャーがないのですか?それらの環境では、これらのサードパーティの実装を引き続き使用しますか?
私はJTAを使い始めたばかりであり、その基盤となるトランザクションマネージャです。誰もがこれらのそれぞれの長所/短所を説明できますか?タイトルに記載しなかった他の人も自由に追加してください。
私が知っているスタンドアロンのトランザクションマネージャーには、 Bitronix 、 SimpleJTA 、 Tyrex (dead?)、 [〜#〜] jotmがあります。 [〜#〜] (Jonasで使用)、 GeronimoTM/Jencks (Geronimoで使用)、 JBossTS (JBossで使用)および Atomikos 。
私はそれらすべてを広範囲にテストしたことはありません(そして、これを選択する必要がある場合は、これを行う必要があります)。しかし、ここにいくつかのリンクがあります:
念のため、ここに私の個人的な見解を示します。
個人的には、私はAtomikosとJBossTSを候補に挙げ、選択する必要がある場合はハードコアでテストします。
また、主要なアプリケーションサーバー(WebSphere、JBoss、Glassfish)には、独自のJTA準拠のトランザクションマネージャーがないのですか?
もちろん、JTAはJava EE仕様の一部であり、Java EEサーバーはそれをサポートする必要があります。
それらの環境では、これらのサードパーティの実装を引き続き使用しますか?
いいえ、提供されたトランザクションマネージャを使用します(簡単にするため、サポートなど)。
JettyでAtomikosとJOTMをテストしました。 Atomikosは問題なく動作しました。私が作った私のアプリケーションで分散トランザクションをテストするための自動ユニットテストとこれらのテストはうまくいきました。
JOTMに関する限り、少なくとも2フェーズコミットプロトコルを偽造していると確信しています。 2フェーズコミット機能がオフになっているPostgreSQLデータベースを使用していて、JOTMは実際の分散トランザクションがあるかのように動作できました。実際のトランザクションマネージャ(GlassFishで実装されているものなど)は、このような場合にエラーを報告しました。
必要に応じて、アプリケーションでJPA2とHibernate 4を使用しました。