Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring和weblogic设置xa数据源_Java_Spring_Spring Mvc_Jpa_Weblogic - Fatal编程技术网

Java 如何使用Spring和weblogic设置xa数据源

Java 如何使用Spring和weblogic设置xa数据源,java,spring,spring-mvc,jpa,weblogic,Java,Spring,Spring Mvc,Jpa,Weblogic,我在Spring4.0中创建xa数据源时遇到问题 我已经使用xa驱动程序在weblogic中设置了数据源。 然后,我在spring中为数据源添加了jndi查找: <jee:jndi-lookup id="dataSourceOne" jndi-name="/jdbc/XAONE" resource-ref="true" /> <jee:jndi-lookup id="dataSourceTwo" jndi-name="/jdbc/XATWO" resource-ref="tru

我在Spring4.0中创建xa数据源时遇到问题

我已经使用xa驱动程序在weblogic中设置了数据源。 然后,我在spring中为数据源添加了jndi查找:

<jee:jndi-lookup id="dataSourceOne" jndi-name="/jdbc/XAONE" resource-ref="true" />
<jee:jndi-lookup id="dataSourceTwo" jndi-name="/jdbc/XATWO" resource-ref="true" />
然后,我为实体管理器创建了配置:

<bean id="emfone" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSourceOne" />
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
    <property name="packagesToScan" value="..." />
</bean>

<bean id="emftwo"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSourceTwo" />
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
    <property name="packagesToScan" value="..." />
</bean>

<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="database" value="ORACLE" />
    <property name="showSql" value="true" />
    <property name="generateDdl" value="false" />
    <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
</bean>
在此之后,我配置了事务管理器:

<tx:annotation-driven />
<tx:jta-transaction-manager />

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="emfone" />
    <qualifier value="tmOne"/>
</bean>

<bean id="docTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="emftwo" />
    <qualifier value="tmTwo"/>
</bean>
我有一个用@Transactional注释的服务类方法,它调用DAO。DAO使用两个实体管理器来持久化数据

当DAO尝试使用emftwo持久化时,将抛出“无事务进行中”错误。有人知道我哪里出错了吗


谢谢,

您不应该使用单个JTA事务管理器吗?您当前正在用本地一个覆盖JTA一个。您应该通过设置正确的jtaplatform来删除JPATransactionManager并设置hibernate以使用JTA事务,我想说的是WeblogicJtaPlatform与Weblogic集成并具有适当的tx传播。@M.Deinum我尝试使用WebLogicJtaTransactionManager代替JTA事务管理器,并且JPATransactionManager尽管我得到了javax.persistence.TransactionRequiredException:在这种情况下,对任一数据源中的任何更新执行更新/删除查询错误,请再次读取我的注释。我没有提到WebLogicJtaTransactionManager,我提到了用于正确配置hibernate的WeblogicJtaPlatform。应该已经添加了WebLogicJtaTransactionManager,但是您当前正在使用JpaTransactionManager覆盖它。谢谢@M.Deinum,您如何设置WebLogicJtaTransactionManager?我已经尝试在LocalContainerEntityManagerFactoryBean中设置jpa属性和jpa属性中的hibernate.transaction.jta.platform。虽然这不起作用,但错误也有点不同。现在,当我尝试使用其中一个数据源进行更新时,会引发以下问题:javax.persistence.TransactionRequiredException:执行更新/删除查询