2009-07-22 14 views
1

私はWebsphere Application Server Express v6.1を使用しており、Spring 2.0.7、Hibernate 3.5を使用するアプリケーションを作成しています。私のデータソースはOracle 10gです。WAS 6.1、Hibernate、Spring、およびトランザクション管理構成

私はより良いトランザクション・マネージャである2質問

  1. がありますか? WebsphereまたはHibernate?
  2. IBMが答えであれば、spring config XMLでどのように設定する必要がありますか?

これは、これはWebSphereのように何を求めます休止状態

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="rmsSessionFactory" /> 
</bean> 

のための私の現在の宣言ですか?

答えて

3

舞台裏で別の実装を使用している場合でも、おそらく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かどうかに関わらず、アプリケーションサーバーのトランザクションマネージャーに行きます。

+1

応答いただきありがとうございます。私は今何をする必要があるか、より良いアイデアを持っています。 WebSphereUowTransactionManagerはWAS 6.0以上でSpring 2.1RC1以上でしか動作しないことが文献で分かっています。残念ながら、Spring 2.0.7を使用しています。 –

+2

また、WebSphereTransactionManagerFactoryBeanはSpring 3.0で削除されています –

0
  1. 「より良い」と定義します。
  2. ここにはWebSphereトランザクションマネージャーのSpring docsがあります。私はあなたがトランザクションマネージャクラスを変更すると信じています。ファクトリクラスにも特別なことをしなければならないかもしれません。
+0

私は既に多くの文献を読みました。より具体的な経験や文献を持っている人からの回答を探しています。私は理解を深める助けが必要です。おそらく、Websphere Transactionサーバーは、単一のアプリケーションサーバーアプリケーションに対して過度に使用されていますか?すべて同じようにありがとう。 –

+0

私はWebSphereを使用したことはありません。神に感謝します。あなたはあなた自身の上にいます。私の考えは、あなたのアプリケーションサーバー用に書かれたトランザクションマネージャを使うことが最善であるということです。私はWebLogicとJBOSSを使用し、それらは私のTXマネージャを決定します。 – duffymo

1

私は大規模なSpring + Hibernate + Websphereプロジェクトに参加していました.WebsphereUowTransactionManagerは、私たちが終わったプロジェクトです。

問題は、デフォルトのWebsphereTransactionManagerがAPIの内部Websphere APIを使用していることです。 UOW TxManagerはうまく機能し、もう少し機能が追加されました(たとえば、サスペンド機能を使用しました)。

jndiの問題については、設定することを心配する必要はありません。トランザクションマネージャがそれを処理します。

しかし、あなたは、UOWトランザクションマネージャーのために行くことを強くお勧めします。spring + hibernate + websphereの問題に対処する開発者の作品articleの見積もりを参照してください。

しかし、春の(スプリング2.5より)以前のバージョンでは、リソースを管理するためのWebとEJBコンテナの能力を妥協し、アプリケーション用のサポートされていない内部のWebSphereインターフェース を用います。これにより、コンテナが不明な状態になる可能性があります。 によってデータが破損する可能性があります。

あなたの春のバージョンをアップグレードすることができ、それはあなたが何か問題があるでしょうとは考えにくいですし、プッシュが突き出すに来るならば、あなたは春2.5のうち、ちょうどそのorg.springframework.transaction.jta.WebSphereUowTransactionManagerを引いて追加することができますそれをアプリケーションに適用します。

関連する問題