首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AssertionFailure: isOpen()调用后的事务MARKED_FOR_JOINED

AssertionFailure: isOpen()调用后的事务MARKED_FOR_JOINED
EN

Stack Overflow用户
提问于 2016-12-05 06:44:09
回答 1查看 165关注 0票数 0

在tomcat 8服务器中部署时,我得到了以下错误

代码语言:javascript
复制
AssertionFailure: Transaction MARKED_FOR_JOINED after isOpen() call

下面是配置的详细信息。

  1. 服务器: tomcat 8
  2. 冬眠3
  3. 弹簧3

服务器的Context.xml。

我做了数据库设置:

代码语言:javascript
复制
<Resource name="jdbc/meerkatDataSource" 
      auth="Container" 
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      driverClassName="oracle.jdbc.driver.OracleDriver" 
      url="jdbc:oracle:thin:@10.237.59.104:1521:MEERKAT" 
      username="meerkat" 
      password="meerkat"
      maxActive="100" 
      maxIdle="20" 
      minIdle="5" 
      maxWait="10000"/>

    <Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"
    factory = "org.objectweb.jotm.UserTransactionFactory"/>

    <Transaction factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/>

    <Resource
    name="TransactionSynchronizationRegistry"
    auth="Container"
    type="javax.transaction.TransactionSynchronizationRegistry"
    factory="org.objectweb.jotm.TransactionSynchronizationRegistryFactory"/>


Transaction.xml -->

     <bean id="transactionManager"  class="org.springframework.transaction.jta.JtaTransactionManager">
     <property name="userTransactionName" value="java:comp/UserTransaction"> 
     <property name="transactionSynchronizationRegistryName" value="java:comp/env/TransactionSynchronizationRegistry"/>
     </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />


Persistent.xml-->

      <persistence-unit name="meerkatPersistenceUnit" transaction-type="JTA"> 
      <jta-data-source>jdbc/meerkatDataSource</jta-data-source>

如有任何更改,请提出建议。还请注意,数据库设置严格在tomcat服务器下。

EN

回答 1

Stack Overflow用户

发布于 2016-12-16 22:06:52

根据我的理解,这里使用的是使用工厂:"org.apache.tomcat.jdbc.pool.DataSourceFactory“的数据源type="javax.sql.DataSource”。

事务管理器是jta类型: class="org.springframework.transaction.jta.JtaTransactionManager">。

如果将数据替换为依次使用org.enhydra.jdbc.pool.StandardXAPoolDataSource.类的javax.sql.XADataSource类型,就可以解决这个问题。确保prsistence管理器使用相同的数据源。

欲了解更多信息,请访问:

https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html

http://xapool.ow2.org/doc/api/jdoc-1.3/org/enhydra/jdbc/pool/StandardXAPoolDataSource.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40968512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档