舞台裏で別の実装を使用している場合でも、おそらくJTAを通じてトランザクションをパイプする必要があります。 (Hibernate、Webphere、Weblogicなど)が含まれます。あなたは自分の元の質問に休止1にtransactionImpl Beanのクラスを置き換える、代わりにHibernateのトランザクションマネージャを使用したい場合は
<bean id="transactionImpl" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager ref="transactionImpl"/>
</bean>
:理想的には、それは次のようになります。
どちらのマネージャーが優れているかについては、正直に言えば、どちらかを選択する重要な理由は考えられません。私が考えることができるのは、単純にフェールオーバーではなく、負荷を共有するアプリケーションサーバーをクラスタ化している場合です。たぶんトランザクションはそれらの間で共有できますか?知りません。誰かが何か他のことを考えることができる場合は、私を修正してください。
EDIT: WebSphereTransactionManagerFactoryBeanは(私が上記使用したもの)までのWebSphere 6.0とするために使用する必要はありません、とWebSphere Transaction Manager Spring Docsに応じてあなたはJTAの直接の代替としてWebSphereUowTransactionManagerを使用する必要がありますように見えます。したがって元の例のHibernateトランザクションマネージャの代わりに、WebSphereUowTransactionManagerクラスを使用してください。 Springはアプリケーション・サーバーのJNDIツリーからトランザクション・マネージャーを取得します。そのため、JNDI名を指定するためにいくつかのプロパティーを設定する必要があります。
私が知ることから、WebSphereトランザクションマネージャーは、とりわけ、トランザクションの中断を行うことができます。個人的には、それがWebSphereかWeblogicかGlassfishかどうかに関わらず、アプリケーションサーバーのトランザクションマネージャーに行きます。
応答いただきありがとうございます。私は今何をする必要があるか、より良いアイデアを持っています。 WebSphereUowTransactionManagerはWAS 6.0以上でSpring 2.1RC1以上でしか動作しないことが文献で分かっています。残念ながら、Spring 2.0.7を使用しています。 –
また、WebSphereTransactionManagerFactoryBeanはSpring 3.0で削除されています –