我在MS SQL数据库上使用JBoss7和EclipseLink。我正在尝试将Spring Data添加到我的项目中,但是当生成存储库方法实现时,一切都会失败。 它尝试加入当前事务,并失败,并显示“ ARJUNA016083:由于事务处于中止状态而无法注册同步”。
我的Spring配置:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" destroy-method="destroy">
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
<property name="persistenceUnitName" value="${module.persistence-unit-name}" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
<bean id="PROPAGATION_REQUIRED" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="transactionManager" />
<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED" />
</bean>
<bean id="PROPAGATION_REQUIRES_NEW" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="transactionManager" />
<property name="propagationBehaviorName" value="PROPAGATION_REQUIRES_NEW" />
</bean>
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="myUnit" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/mixx</jta-data-source>
<class>package.MyEntity</class>
<shared-cache-mode>NONE</shared-cache-mode>
<validation-mode>NONE</validation-mode>
<properties>
<property name="eclipselink.target-server" value="JBoss" />
<property name="eclipselink.deploy-on-startup" value="true" />
<property name="eclipselink.weaving" value="static" />
<property name="eclipselink.exception-handler" value="package.persistence.EclipseLinkExceptionHandler" />
<property name="eclipselink.session.customizer" value="package.persistence.EclipseLinkSessionCustomizer" />
</properties>
</persistence-unit>
</persistence>
当它尝试调用(第136行)时,它在JTATransactionWrapper.registerIfRequired(UnitOfWorkImpl uow)中完全失败:
((Transaction)txn).registerSynchronization(new Synchronization() {
public void beforeCompletion() {}
public void afterCompletion(int status) {
//let the wrapper know the listener is no longer registered to an active transaction
isJoined = false;
}
});
Spring Data是否可以在EclipseLink和JTA上正常工作?有机会在我的项目中使用它吗?