2009-11-23 48 views
13

として私たちは春のconfigに私たちの春のトランザクションを設定します。私はこの春には、自動的に基本となるJTAの実装を発見することを意味集まるSpring JTAの設定 - TransactionManagerの設定方法は?

<tx:jta-transaction-manager/> 

。我々は、JBossを起動するときに、私たちは春を検索しながら、これらのメッセージを参照してください。

[JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran 
sactionManager] 
javax.naming.NameNotFoundException: TransactionManager not bound 
<<Big stack trace>>  
<<More of the same>> 

そして最終的には以下を参照してください

[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction 
Manager] 
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT 
[email protected] 

質問です - どのように我々は、明示的にjava:/Transaction Manager JTA実装を設定するには、私たちの<tx:jta-transaction-manager/>タグを編集することができますこれらのスタックトレースはすべてログに記録されないようにします。 (私はlog4jロギングレベルを変更しないことを好むだろう)


更新:私は、これは大丈夫です推測している..私は、以下の設定で<tx:jta-transaction-manager/>を交換し、動作するようですか?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:/TransactionManager"/> 
</bean> 
+1

一般的に言えば、JBossのバージョン、デポジットしているアプリケーションの種類など、できるだけ多くの情報を提供することは、常に良いことです。ここで問題を解決するとは言いませんが、それは助けるかもしれません。 –

答えて

13

はい、問題ありません。あなたが見ていたスタックトレースも大丈夫でした。<tx:jta-transaction-manager/>は、さまざまな標準の場所からトランザクションマネージャを取得しようとしています。失敗したJNDIルックアップごとにjavax.naming.NameNotFoundExceptionが表示されます。

java:/TransactionManagerは、JBossがデフォルトでバインドする場所です。他のサーブレットコンテナはデフォルトでjava:/comp/TransactionManagerになります。これはTMの「標準」位置と思われます。 Spring reference documentationから

: のWebLogic、WebSphereおよびOC4Jを含む、標準的なシナリオについては、

、便利 <tx:jta-transaction-manager/> の構成要素を使用して を検討します。これにより、 は、基盤となる サーバーを自動的に検出し、プラットフォームに最適な マネージャーを選択します。 これは、 サーバー固有のアダプタ クラス(以下の セクションで説明します)を明示的に構成する必要はないことを意味します。彼らはむしろ 標準JtaTransactionManagerと デフォルトフォールバックと自動的に選択されます。

4

共通「間違い」は、配備J2EEコンポーネントでjta.jarおよび/またはjbossall-client.jarのようなものをバンドルすることです。この場合、再度確認してください。

関連する問題