2016-12-05 82 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