【问题标题】:Integration of JBoss Narayana Transaction with Spring Data JPA in TomcatTomcat 中 JBoss Narayana Transaction 与 Spring Data JPA 的集成
【发布时间】:2018-01-29 16:06:00
【问题描述】:

来自https://github.com/jbosstm/narayana/,我试过用

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

为 Spring 实现 JTA 事务管理器 数据 JPA (Hibernate) 项目。

虽然 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" />

【问题讨论】:

    标签: java hibernate jpa jboss spring-data-jpa


    【解决方案1】:

    自 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"/>
    

    【讨论】:

    猜你喜欢
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2014-07-02
    • 2012-08-07
    • 2018-12-21
    相关资源
    最近更新 更多