首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring配置-如何设置TransactionManager?

Spring配置-如何设置TransactionManager?
EN

Stack Overflow用户
提问于 2009-11-23 14:41:42
回答 2查看 47.5K关注 0票数 13

我们在Spring配置中将Spring事务配置为:

代码语言:javascript
复制
<tx:jta-transaction-manager/>

我认为这意味着Spring将自动发现底层的JTA实现。因此,当我们启动JBoss时,我们会在Spring搜索时看到这些消息:

代码语言:javascript
复制
[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>>

然后最终看到:

代码语言:javascript
复制
[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/>,它似乎有效。我猜这没问题吧?

代码语言:javascript
复制
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-23 15:55:17

是的,没关系。您所看到的堆栈跟踪也是正常的:<tx:jta-transaction-manager/>试图从许多不同的标准位置获取事务管理器;对于每一个失败的JNDI查找,您都会看到javax.naming.NameNotFoundException

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

来自春季参考文献

对于标准场景,包括WebLogic、WebSphere和OC4J,请考虑使用方便的<tx:jta-transaction-manager/>配置元素。这将自动检测底层服务器,并选择平台可用的最佳事务管理器。这意味着您不必显式地配置特定于服务器的适配器类(如下面几节所述);它们将被自动选择,标准JtaTransactionManager作为默认回退。

票数 13
EN

Stack Overflow用户

发布于 2009-11-23 14:57:51

一个常见的“错误”是将诸如jta.jar和/或jbossall-client.jar之类的东西捆绑在您部署的J2EE组件中。请再检查一遍,如果是这样的话,请把它们移除。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1783540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档