其他分享
首页 > 其他分享> > spring – 如何访问TomEE的JTA事务管理器?

spring – 如何访问TomEE的JTA事务管理器?

作者:互联网

我有一个使用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>

并且,在应用程序META-INF / spring / applicationContext.xml文件中我有这样的:(我已经尝试了各种各样的主题讨论中建议的transactionManagerName的各种值,因为它似乎是跨应用程序服务器的非标准

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

这是一个声称适用于JBoss的示例:Spring JTA configuration – how to set TransactionManager?

这是一个在xml配置文件中无效的错过:https://issues.apache.org/jira/browse/TOMEE-38

如果你手上有initialContext:http://osdir.com/ml/users.openejb.apache.org/2012-11/msg00110.html,这里是如何在java代码中完成的

[编辑:Tomee文档讨论了如何声明一个事务管理器,但它说它是在Tomee.xml中完成的,它属于服务器而不属于单个webapp;我想为单个应用程序配置事务管理器,而不是为整个服务器配置:http://tomee.apache.org/containers-and-resources.html]

解决方法:

你有没有为transactionManagerName试过java:comp / env / TransactionManager?
,
你也按照这里描述的那样声明了TransactionManager和DataSource:http://tomee.apache.org/containers-and-resources.html

标签:spring,jta,openejb,apache-tomee
来源: https://codeday.me/bug/20190629/1326497.html