我正在使用spring3和Hibernate4与Tomcat7。
我必须使用JTATransactionManager,我的配置如下。
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransactionName" value="java:comp/UserTransaction"></property>
</bean>
在以上配置中java:comp/UserTransaction
定义了什么?
谢谢!
答案 0 :(得分:0)
它是对容器提供的用户事务对象的JNDI引用。
用户无法对此进行配置(因为您无法自行更改值)。该值取决于您使用的EE容器。
关于用户事务对象到底是什么,请参阅Wikipedia:
UserTransaction接口
javax.transaction.UserTransaction接口提供了 应用程序控制事务边界的能力 编程。 Java客户端程序可以使用此接口 或EJB bean。
UserTransaction.begin()方法启动全局事务和 将事务与调用线程相关联。该 事务到线程关联由透明管理 交易经理。
不需要支持嵌套事务。该 UserTransaction.begin方法在抛出NotSupportedException时抛出 调用线程已经与事务相关联 事务管理器实现不支持嵌套 交易。
应用程序之间的事务上下文传播是 由底层事务管理器实现提供 客户端和服务器机器。用于的事务上下文格式 传播是依赖于协议的,必须在协议之间进行协商 客户端和服务器主机。例如,如果事务管理器是 执行JTS规范时,它将使用该事务 CORBA OTS 1.1中规定的上下文传播格式 规格。事务传播对应用程序是透明的 程序..
答案 1 :(得分:0)
JTA并与之相关XA事务是实现和支持的棘手问题。正如@js-nizet所说,只有JEE应用服务器有自己的事务管理器实现开箱即用。对于像Tomcat或Jetty这样的轻量级Web服务器,您必须提供外部实现并配置Spring以使用它。有很多选择因此取决于你。我可以推荐你Jboss' Narayana,但这完全取决于你。由于运行起来并不是那么直截了当,我会向您推荐以下博文,其中详细介绍了所有内容 - Configuring Spring and JTA without full Java EE。
这里有关于如何使用Spring和Jetty配置Narayan的another post。