Mar*_*eon 13 java jboss spring jta spring-transactions
我们将Spring配置中的Spring事务配置为:
<tx:jta-transaction-manager/>
Run Code Online (Sandbox Code Playgroud)
我收集这意味着Spring将自动发现底层的JTA实现.因此,当我们启动JBoss时,我们会在Spring搜索时看到这些消息:
[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>>
Run Code Online (Sandbox Code Playgroud)
然后最终看到:
[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction
Manager]
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT
ransaction@1f78dde
Run Code Online (Sandbox Code Playgroud)
问题是 - 我们如何编辑我们的<tx:jta-transaction-manager/>
标签以显式配置java:/Transaction Manager
JTA实现,以便我们避免日志中的所有这些堆栈跟踪?(我不想只改变Log4J日志记录级别)
更新:我<tx:jta-transaction-manager/>
用下面的配置替换它似乎工作..我猜这是好的?
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
Hen*_*ing 13
是的,没关系.您看到的堆栈跟踪也没问题:<tx:jta-transaction-manager/>
尝试从多个不同的标准位置获取事务管理器; 对于每个失败的JNDI查找,你都会看到javax.naming.NameNotFoundException
.
java:/TransactionManager
是JBoss默认绑定的地方; 其他servlet容器将默认为java:/comp/TransactionManager
,我认为它应该是TM的"标准"位置.
对于标准方案,包括WebLogic,WebSphere和OC4J,请考虑使用方便的
<tx:jta-transaction-manager/>
配置元素.这将自动检测底层服务器并选择可用于该平台的最佳事务管理器.这意味着您不必显式配置特定于服务器的适配器类(如以下部分所述); 他们宁愿自动选择,标准JtaTransactionManager
作为默认回退.
归档时间: |
|
查看次数: |
45337 次 |
最近记录: |