2016-12-05 78 views
0

虽然部署在tomcat的8服务器,我得到了以下错误AssertionFailure:ISOPEN后MARKED_FOR_JOINED交易()调用

AssertionFailure: Transaction MARKED_FOR_JOINED after isOpen() call 

以下是配置的细节。

  1. 服务器:tomcat的8
  2. 休眠3
  3. 春3

context.xml的服务器..

我已经做数据库设置:

<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服务器下。

+0

你检查这些链接[链接1](http://stackoverflow.com/questions/1982980/spring-transaction-manager- error-transaction-marked-for-joined-after-isopen-c),[link2](http://forum.spring.io/forum/spring-projects/data/53080-org-hibernate-assertionfailure-transaction-marked -for-joined-after-isopen-call) – Laxman

+0

谢谢你的回应。我已经检查过这些链接,但是它没有成功。 –

回答

0

按我的理解,这里 你正在使用的数据源类型=“javax.sql.DataSource中的”使用工厂:“org.apache.tomcat.jdbc.pool.DataSourceFactory”

和事务管理是JTA类型: 类=“的org.springframework.transaction.jta.JtaTransactionManager”>

它可以,如果它的数据BAS是通过使用具有类依次型 javax.sql.XADataSource中替换解决: an org.enhydra.jdbc.pool.StandardXAPoolDataSource。确保持久性管理器使用相同的数据源。

如需进一步信息经过:

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