アプリケーションのエンティティBeanをEJB 2.0から3.0にアップグレードしています。私はweblogicサーバ(10.3.0)上でopenjpaバージョン1.2.2を使用しており、トランザクションタイプはJTAになります。javax.transaction.SystemException:不正な状態(Expected:PrePrepared)です。 BEA1-0A15322BC6A35D331713
エンティティを永続トランザクションポストをコミットしながら、私は以下のエラーが直面しています:
以下javax.transaction.SystemException: Illegal state (Expected: PrePrepared). BEA1-0A15322BC6A35D331713 at weblogic.transaction.internal.TransactionImpl.abortUnsync(TransactionImpl.java:1134) at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:2172) at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:270) at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:230) at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:283) at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:277) at com.bt.cp.entities.EntityBeansMultiThreadTest$Loader.call(EntityBeansMultiThreadTest.java:104) at com.bt.cp.entities.EntityBeansMultiThreadTest$Loader.call(EntityBeansMultiThreadTest.java:78) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619)
は、このエラーが発生するコードスニペットです:
以下public Boolean call() throws Exception {
EntityManager entityManager = entityManagerSingleton.createEntityManager();
UserTransaction tx = entityManagerSingleton.createTransaction();
try {
tx.begin();
// Join the EntityManager operations to this UserTransaction
entityManager.joinTransaction();
entityManager.persist(new Party());
tx.commit();
} catch(Exception e) {
e.printStackTrace()
}
return true;
}
は私のpersistence.xmlのです。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="testDataSource" transaction-type="JTA">
<jta-data-source>testDataSource</jta-data-source>
<class>test.Party</class>
<class>
.........................
</class>
<properties>
<property name="openjpa.QueryCache" value="true(CacheSize=1000)"/>
</properties>
</persistence-unit>
</persistence>
このエラーは、openjpaバージョン1.1.0では表示されません(ウェブの一部ロジック10.3.0)。しかし、バージョン1.1.0(https://issues.apache.org/jira/browse/OPENJPA-466)の大きなバグがあり、バージョン1.2.2を使用しています。
この問題を解決するにはどうすればよいですか?誰もこれについての指針を持っています。どんな助けもありがとうございます。
感謝:)私が言及したバグが(私の編集を参照してください)バージョン1.1.0とあったので、私は1.2.2を使用していてくれたエラーを与えます。また、これはweblogic/JTAトランザクションの問題と関係がありますが、この問題の原因を正確に把握しようとしています。また、シングルスレッド環境で同じエラーが発生するため、これがマルチスレッドの問題ではないことも確認しました。 – Niru