Spring 如何访问e';什么是JTA事务管理器?
我有一个使用Spring声明性事务管理的应用程序。如何将其部署到TomEE+容器中,以便应用程序使用TomEE的JTA事务管理器 更具体地说,如何从Spring的“application context.xml”文件中引用内置事务管理器 Spring的事务管理配置似乎希望通过bean引用或JNDI查找来查找事务管理器;我花了一天的时间研究这个问题,并查看源代码;我发现很多关于这个问题的讨论(参考文献如下),但没有明确的操作方法 我在应用程序的META-INF/persistence.xml中看到的是:Spring 如何访问e';什么是JTA事务管理器?,spring,jta,openejb,apache-tomee,Spring,Jta,Openejb,Apache Tomee,我有一个使用Spring声明性事务管理的应用程序。如何将其部署到TomEE+容器中,以便应用程序使用TomEE的JTA事务管理器 更具体地说,如何从Spring的“application context.xml”文件中引用内置事务管理器 Spring的事务管理配置似乎希望通过bean引用或JNDI查找来查找事务管理器;我花了一天的时间研究这个问题,并查看源代码;我发现很多关于这个问题的讨论(参考文献如下),但没有明确的操作方法 我在应用程序的META-INF/persistence.xml中看到
<persistence-unit name="myPersistenceUnit" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>myDs-managed</jta-data-source>
<non-jta-data-source>myDs-unmanaged</non-jta-data-source>
<properties>
<property name="openjpa.jdbc.DBDictionary"
value="org.apache.openjpa.jdbc.sql.PostgresDictionary"/>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
<property name="openjpa.Run
<property name="openjpa.Log" value="slf4j" />
</properties>
</persistence-unit>
org.apache.openjpa.persistence.PersistenceProviderImpl
myDs管理
myDs非托管
您是否尝试过TransactionManager名称的java:comp/env/TransactionManager
?
,
您是否已按此处所述声明了TransactionManager和数据源:?Jukka,谢谢,是的,我尝试了java:comp/env/TransactionManager。我看过了您引用的文档页面,但它谈到了在tomee.xml中声明数据源和事务管理器,据我所知,它为所有应用程序配置了整个服务器实例;我只想为单个应用程序配置数据源和事务管理器。(编辑问题以澄清此问题)Spring不会为您创建底层容器管理的事务管理器或数据源,因此您需要在tomee.xml(或其他特定于容器的配置文件)中声明它们。我不知道TomEE是否允许您将其范围限制为单个应用程序。但如果确实需要,您可以在spring配置中将TomEE事务管理器和数据源声明为bean。但就我个人而言,我会让容器管理它们,而不必担心细节。Jukka,“让容器管理它们,而不必担心细节”正是我想要实现的目标。你能帮我做吗?结果比预期的简单:
JTA默认提供的事务管理器的类名是什么?我注意到TomEE+发行版包括geronimo事务和openejb核心,它们都有相当多的事务管道。
<tx:annotation-driven mode="aspectj" transaction-manager="txManager" />
<bean class="org.springframework.transaction.jta.JtaTransactionManager"
id="txManager">
<property name="transactionManagerName"
value=" java:comp/TransactionManager"/>
</bean>