使用JTATransactionManager进行交易?

时间:2014-02-07 07:31:50

标签: java spring hibernate tomcat jta

我正在使用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定义了什么?

谢谢!

2 个答案:

答案 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