微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Spring JTA配置 – 如何设置TransactionManager?

我们将 Spring配置中的 Spring事务配置为:
<tx:jta-transaction-manager/>

我收集这意味着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>>

然后最终看到:

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

问题是 – 我们如何编辑我们的< 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>

解决方法

是的,没关系您所看到的堆栈跟踪也是如此:< tx:jta-transaction-manager />尝试从多个不同的标准位置获取交易管理器;对于每个失败的JNDI查找,您将看到javax.naming.NameNotFoundException.

java:/ TransactionManager是JBoss在认情况下绑定的地方;其他servlet容器将认为java:/ comp / TransactionManager,我认为这应该是TM的“标准”位置.

Spring reference documentation

For standard scenarios,including
WebLogic,WebSphere and OC4J,consider
using the convenient
<tx:jta-transaction-manager/>
configuration element. This will
automatically detect the underlying
server and choose the best transaction
manager available for the platform.
This means that you won’t have to
configure server-specific adapter
classes (as discussed in the following
sections) explicitly; they will rather
be chosen automatically,with the
standard JtaTransactionManager as default fallback.

原文地址:https://www.jb51.cc/java/123644.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐