使用Spring:
jta-transaction-manager能否使用id作为名称,以便我可以将它作为REF传递给我的服务层,如下所示?
是tx:jta-transaction-manager只能用于je22容器?我的意思是Tomcat,我需要手动完成,如下所示:
<tx:jta-transaction-manager id="name_transactionmanager"/>
<bean id="projectService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"
ref="name_transactionmanager"/>
<property name="target">
<bean
class="com.company.project.company.services.ServiceImpl"
init-method="init">
<property
name="HRappsdao"
ref="HRappsdao"/>
<property
name="projectdao"
ref="projectdao"/>
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="store*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="bulkUpdate*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction">
<bean class="org.springframework.transaction.jta.JotmFactoryBean"/>
</property>
</bean>
答案 0 :(得分:16)
tx:jta-transaction-manager
可以使用id作为名称,以便我可以将它作为REF传递给我的服务层,如下所示吗?
<tx:jta-transaction-manager>
在Spring上下文中将事务管理器公开为Bean,名称为“transactionManager
”。
tx:jta-transaction-manager
只能与J2EE容器一起使用吗?
从Spring文档中引用Chapter 9. Transaction management:
交易管理需要应用服务器吗?
Spring Framework的交易 管理支持显着 改变传统思维方式 当J2EE应用程序需要时 应用服务器。
特别是,你不需要 应用服务器就好了 通过EJB进行声明式事务。在 事实上,即使你有一个申请 具有强大JTA功能的服务器, 你很可能决定春天 框架的声明性事务 提供更多的力量和更多 生产性编程模型比EJB CMT。
通常您需要一个应用程序 服务器的JTA功能只有你 需要登记多个交易 资源,以及许多应用程序 能够处理交易 跨多个资源不是一个 需求。例如,很多 高端应用程序使用单个, 高度可扩展的数据库(例如 Oracle 9i RAC)。独立交易 Atomikos Transactions等经理 和JOTM是其他选择。 (当然 您可能需要其他应用服务器 JMS和JCA等功能。)
最重要的一点是 您可以选择Spring Framework 何时将您的应用程序扩展到a 成熟的应用服务器。飘 是唯一替代的日子 使用EJB CMT或JTA进行编写 代码使用本地事务,如 那些关于JDBC连接的人,面对一个 如果你需要那么大量的返工 代码在全局范围内运行, 容器管理的事务。同 仅限Spring Framework 配置需要改变以便 你的代码没有。
因此,如第三段所述,如果您想使用多个事务资源,则需要涉及支持JTA的应用程序服务器的全局事务。 支持JTA的应用程序服务器表示真正的J2EE容器或非J2EE容器(如Tomcat),它具有独立的事务管理器,如Atomikos,JOTM,Bitronix, SimpleJTA,JBossTS或GeronimoTM/Jencks。
FWIW,我看到很多关于JOTM的抱怨,我认为GeronimoTM / Jencks缺乏文档,我真的不能说任何关于 JBossTS ArjunaTS(除了它是一个坚如磐石的产品),SimpleJTA和Bitronix都有很好的文档,Atomikos也是一个令人印象深刻的产品。就个人而言,我会选择Bitronix或Atomikos。