新しいプロジェクト用に新しい JTA トランザクション構成をセットアップしようとしています。このプロジェクトは、atomikos JTA トランザクション マネージャーを使用して、Spring JPA と Spring Data を利用します。
atomikos チュートリアルの 1 つで見たように、xml を構成しました。
現在、エラーなしでサーバーを起動できました。
問題は、@Transactional サービス内で jpaRepository を使用してエンティティを永続化しようとすると、ログに atomikos jta tranascion が発生し、コミットが成功したことが示されます。しかし、DB はテーブルに新しいエントリを表示します。
2 つの Bean が同じパッケージをスキャンし、上記のような「疑似持続」効果が発生する前に、同様の問題がありました。
ここに私たちのxmlがあります:
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<tx:annotation-driven transaction-manager="transactionManager"
proxy-target-class="true" />
<bean id="AtomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<property name="forceShutdown" value="false" />
</bean>
<bean id="AtomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager"
depends-on="AtomikosTransactionManager,AtomikosUserTransaction">
<property name="transactionManager" ref="AtomikosTransactionManager" />
<property name="userTransaction" ref="AtomikosUserTransaction" />
<property name="allowCustomIsolationLevels" value="true" />
</bean>
<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init" destroy-method="close">
<property name="uniqueResourceName" value="DataSource" />
<property name="xaDataSource" ref="dataBase" />
<property name="poolSize" value="3" />
</bean>
<bean id="dataBase" class="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"
lazy-init="true">
<property name="pinGlobalTxToPhysicalConnection" value="true" />
<property name="url"
value="mydb" />
<property name="user" value="user" />
<property name="password" value="password" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan"
value="packages" />
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
<property name="dataSource" ref="dataSource" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL" />
<!-- <property name="databasePlatform" value="${hibernate.dialect}"/> -->
<property name="showSql" value="false" />
<property name="generateDdl" value="false" />
<!-- <property name="hibernate.connection.autocommit" value="false"/> -->
</bean>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.connection.autocommit" value="false" />
</map>
</property>
</bean>
この構成ファイルの何が問題なのですか?
ありがとう!