我需要使用 JCA 部署数据核。我的应用程序建立在 ejb3 和 CDI 之上。出现此错误后,我无法继续。
21:29:38,789 SEVERE [DataNucleus.Datastore.Schema] (http--10.91.10.49-8080-1) Failed initialising database.: org.datanucleus.exceptions.
NucleusDataStoreException: You cannot commit during a managed transaction!
at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.close(ConnectionFactoryImpl.java:522) [datanucleus-rdbms-3.0.0-m6.jar:]
我正在将 LocalTransaction 与我定义的 Jboss 管理的数据源一起使用
Standalone.xml 驱动程序类 oracle.jdbc.driver.OracleDriver
ra.xml
事务支持 LocalTransaction
jdopersistance.xml
datanucleus.jtaLocator custom_jndi
datanucleus.jtaJndiLocation java:jboss/TransactionManager
datanucleus.connection.resourceType JTA
Standalone.xml 中定义的资源适配器已正确绑定,我可以在 ejb 中访问它。当我尝试访问持久性管理器时,会发生上述异常。
问题:是否有人在 JCA 下为 datnucleus 在 Jboss 上工作为 7
即使在我定义 datanucleus.connection.resourceType = JTA 之后,关于为什么 datanucleus 仍试图提交的任何线索
其他信息
jdbc 驱动程序 ojdbc6.jar
数据核-datanucleus-jca-3.0.0-m6.rar
Jboss作为7决赛
JDK 1.6
Ubuntu 8.10
甲骨文 11g
回答
谢谢安迪,在我创建了两个单独的数据源 1) 使用 JTA 2) 没有 JTA 后它可以工作。datanucleus.ConnectionFactory2Name ==> 指向非 JTA。另外我必须添加 datanucleus.jtaJndiLocation = java:jboss/TransactionManager。似乎这是特定于 oracle 的,我还没有尝试使用其他数据库。www.datanucleus.org/servlet/forum/viewthread_thread,4663_offset 上的讨论有所帮助。