在tomcat 8服务器中部署时,我得到了以下错误
AssertionFailure: Transaction MARKED_FOR_JOINED after isOpen() call下面是配置的详细信息。
服务器的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服务器下。
发布于 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
https://stackoverflow.com/questions/40968512
复制相似问题