【问题标题】:Deploying Datanucleus on jboss AS 7在 jboss AS 7 上部署 Datanucleus
【发布时间】:2011-07-26 17:09:15
【问题描述】:

我需要使用 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 管理的数据源一起使用 我已经定义了

独立的.xml 驱动类 oracle.jdbc.driver.OracleDriver

ra.xml

事务支持本地事务

jdopersistance.xml

datanucleus.jtaLocator custom_jndi

datanucleus.jtaJndiLocation java:jboss/TransactionManager

datanucleus.connection.resourceType JTA

standalone.xml 中定义的资源适配器已正确绑定,我可以在 ejb 中访问它。 当我尝试访问持久化管理器时出现上述异常。

问题:是否有人在 JCA 下为 datnucleus 在 Jboss as 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

回答

感谢 andy,在我创建了两个单独的数据源 1) 使用 JTA 2) 没有 JTA 后它可以工作。 datanucleus.ConnectionFactory2Name ==> 指向非 JTA。另外我必须添加 datanucleus.jtaJndiLocation = java:jboss/TransactionManager。似乎这是特定于 oracle 的,我还没有尝试使用其他数据库。 www.datanucleus.org/servlet/forum/viewthread_thread,4663_offset 上的讨论有所帮助。

【问题讨论】:

  • 为什么不问这个问题,在 JBoss6 中很多人都在毫无问题地部署它,那么 JBoss7 有什么不同呢? (同版本的DataNucleus)
  • 我正在开发一种类似于 hibernate-envers 的产品,使用 datanucleus 几乎没有审计功能。我喜欢注释。使用 由于 jboss7 是模块化且快速的。此外,jboos6 不是 EAP 的一部分。首先,我将在 jboss as7 上完成我的产品实现,并想办法将 JDO 添加为 jboss as7 的一等公民。
  • @DataNucleus 类加载在 jboos as7 中已更改。它由模块和 jboss-deployent-structure.xml 控制服务器的配置现在是集中的(standalone.xml/domain.xml),没有 *-ds 文件。日志记录发生了变化,我还没有弄清楚如何打印 datanucleus 日志。现在它使用 JCA1.6 (IronJacamar)。切换到 JCA1.6 是否会导致上述行为?
  • 我已经定义了 datanucleus.connection.resourceType = JTA ,在调试中我发现 ConnectionFactoryImpl.java 中的 resourceType 显示为 nonTX。构造函数 ConnectionFactoryImpl(StoreManager storeMgr, String resourceType) 正在进入非事务块。我希望它执行事务性的。任何人都可以帮助 - 出了什么问题。
  • 总是有两个连接工厂... tx 和 non-tx。并不意味着您的持久性代码(您没有引用)正在使用“非 tx”连接

标签: jdo datanucleus jboss7.x


【解决方案1】:

感谢 andy,在我创建了两个单独的数据源 1) 使用 JTA 2) 没有 JTA 后它可以工作。 datanucleus.ConnectionFactory2Name ==> 指向非 JTA。另外我必须添加 datanucleus.jtaJndiLocation = java:jboss/TransactionManager。似乎这是特定于 oracle 的,我还没有尝试使用其他数据库。在 datanucleus.org/servlet/forum/viewthread_thread,4663_offset 的讨论有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多