我是否需要应用程序服务器进行事务管理?

时间:2011-12-03 04:22:57

标签: hibernate spring transactions jta

我真的需要一个用于事务管理的应用服务器吗?

我的问题是Spring框架。 他们说(Spring Documentation),

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html#d0e20594

“通常,只有当您的应用程序需要处理跨多个资源的事务时,您才需要应用程序服务器的JTA功能”, 我使用Jboss AS Server,JBoss可以提供来自连接池的连接并管理事务。 我的配置文件使用(本地):

<!-- Transaction Config -->
<bean id="transactionManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager"
      p:sessionFactory-ref="sessionFactory"/>

我是否需要更改为(全局):

<bean id="txManager" 
      class="org.springframework.transaction.jta.JtaTransactionManager"/>

我命令使用Jboss的连接池。 Spring文档说:

  

特别是,您不需要仅通过EJB进行声明式事务的应用程序服务器。实际上,即使您的应用程序服务器具有强大的JTA功能,您也可以决定Spring Framework的声明式事务提供比EJB CMT更强大的功能和更高效的编程模型。   感谢。

2 个答案:

答案 0 :(得分:2)

使用ApplicationServer来提供事务管理取决于您的用例,

如果您的事务是分布式的(跨越多方),那么您希望使用JTA事务功能,对于普通的数据库事务,您不需要应用程序服务器,并且Spring内置的事务功能已经足够了。

虽然它还取决于为您的应用程序定义的体系结构,但在某些组织中,即使事务边界有限且不需要分布式事务,也可以使用JTA。

您可能希望阅读有关分布式事务的内容,以确定您是需要JTA还是仅需要Spring本地事务。

一些参考文献:

http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html

http://en.wikipedia.org/wiki/Java_Transaction_API

答案 1 :(得分:0)

这是泉源对你的问题所说的话:

  

交易管理需要应用服务器吗?

     

Spring Framework的事务管理支持发生了重大变化   传统思考J2EE应用程序何时需要   应用服务器。特别是,您不需要应用程序   服务器只是通过EJB进行声明式事务。事实上,即使   你有一个具有强大JTA功能的应用服务器   确定Spring Framework的声明式事务提供了   比EJB CMT更强大,编程效率更高。   通常,只有您需要应用程序服务器的JTA功能   需要登记多个交易资源,对许多人而言   应用程序能够处理多个事务   资源不是必需的。例如,许多高端应用程序   使用单个高度可扩展的数据库(例如Oracle 9i RAC)。   独立的事务管理器,如Atomikos Transactions和JOTM   是其他选择。 (当然,您可能需要其他应用程序服务器   JMS和JCA等功能。)最重要的一点是   使用Spring Framework,您可以选择何时扩展您的   应用程序到一个成熟的应用程序服务器。天已经过去了   当使用EJB CMT或JTA的唯一替代方法是编写代码时   使用诸如JDBC连接上的本地事务,并面对a   如果您需要在全球范围内运行该代码,那么需要大量返工   容器管理的事务。仅限Spring Framework   配置需要更改,以便您的代码不必。

More Detail..