繁体   English   中英

在Tomcat中将JBoss Narayana事务与Spring Data JPA集成

[英]Integration of JBoss Narayana Transaction with Spring Data JPA in Tomcat

https://github.com/jbosstm/narayana/中 ,我尝试使用

org.jboss.narayana.jta:narayana-jta:5.6.2.Final

为Spring Data JPA(休眠)项目实现JTA事务管理器。

尽管Hibernate成功返回了用id(由Sequence生成)保存的对象,但该行实际上并未持久存储在数据库中。

任何帮助都将非常受欢迎。

春季配置:

<jee:jndi-lookup id="userTxn" jndi-name="java:comp/UserTransaction" />
<jee:jndi-lookup id="tm" jndi-name="java:comp/env/TransactionManager" />
<jee:jndi-lookup id="jtaTxnSyncRegistry" jndi-name="java:comp/env/TransactionSynchronizationRegistry" />


<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
 <property name="userTransaction" ref="userTxn"></property>
 <property name="transactionManager" ref="tm"/>
 <property name="transactionSynchronizationRegistry" 
  ref="jtaTxnSyncRegistry"/>
</bean>

 <tx:annotation-driven transaction-manager="transactionManager"/>


 <bean id="entityManagerFactoryJTA"     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    p:persistenceUnitName="myPU_JTA">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
</bean>

 <jpa:repositories base-package="com.xxx.repository.jta"
    entity-manager-factory-ref="entityManagerFactoryJTA"
    transaction-manager-ref="transactionManager" /> 

apache-tomcat-8.5.16的 context.xml

 <Resource name="UserTransaction" auth="Container"
    type="javax.transaction.UserTransaction" factory="com.arjuna.ats.jta.TransactionManager" />

<Transaction    factory="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple" />  <!-- auth="Container" -->

<Resource name="TransactionManager" auth="Container" type="javax.transaction.TransactionManager"        factory="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"></Resource>

<Resource name="TransactionSynchronizationRegistry" auth="Container"  type="javax.transaction.TransactionSynchronizationRegistry"
    factory="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple" />

自Narayana 5.5起,我们引入了tomcat-jta模块以帮助与tomcat集成。 参见https://github.com/jbosstm/narayana/tree/master/tomcat,所以我认为您需要使用以下context.xml

<!-- Narayana resources -->
<Transaction factory="org.jboss.narayana.tomcat.jta.UserTransactionFactory"/>
<Resource name="TransactionManager" type="javax.transaction.TransactionManager"
          factory="org.jboss.narayana.tomcat.jta.TransactionManagerFactory"/>
<Resource name="TransactionSynchronizationRegistry" type="javax.transaction.TransactionSynchronizationRegistry"
          factory="org.jboss.narayana.tomcat.jta.TransactionSynchronizationRegistryFactory"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM