Java Spring MVC=事务不再处于活动状态
我有一个基于SpringWebModelViewController(MVC)框架的项目。SpringWebModelViewController(MVC)框架的版本是3.2.8,部署在WebLogic服务器版本12.1.2.0.0上 我在1个查询中有此错误Java Spring MVC=事务不再处于活动状态,java,sql,spring,spring-mvc,oracle11g,Java,Sql,Spring,Spring Mvc,Oracle11g,我有一个基于SpringWebModelViewController(MVC)框架的项目。SpringWebModelViewController(MVC)框架的版本是3.2.8,部署在WebLogic服务器版本12.1.2.0.0上 我在1个查询中有此错误 Caused By: java.lang.RuntimeException: java.sql.SQLException: The transaction is no longer active - status: 'Marked rol
Caused By: java.lang.RuntimeException: java.sql.SQLException:
The transaction is no longer active - status: 'Marked rollback. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 31 seconds
BEA1-000D9470C1367F28EDB9]'.
No further JDBC access is allowed within this transaction., criteria [ com.tdk.books.domain.ProductSearchCriteria@c5f15d5c ], sql [ select PRODUCT_ID from V_BOOKS where category_id = ? ]
甚至我在服务方法中也设置了10000个超时
@Transactional(timeout=10000, propagation = Propagation.REQUIRES_NEW)
Oracle社区的根本原因:
通常情况下,当事务完成时会发生这种情况,但事实并非如此
忽略,应用程序尝试继续处理并发出JDBC
发生在TX之外的语句。此问题的根源
可以是通过序列传递的连接对象
使用连接的方法的列表。其中一种方法提交TX
从而使连接失效
资源链接:
提出了一些解决问题的建议
第一项建议:
请尝试将weblogic数据源设置从非XA更改为
XA。你应该摆脱这个例外
资源链接:
第二项建议:
取消选中支持全局事务重新启动服务器
资源链接:
第三项建议:
这个问题的真正解决方案是异步处理。但是它
可能不适合你的情况
首先,如果您正在对Oracle进行任何jdbc调用,那么您可以设置
在数据库上执行查询时,查询超时。之后
查询超时,Oracle将为您提供一个可以处理的异常
信息技术因此,基本上在这种情况下,您不会取消EJB请求
事实上但它可能会解决你的问题
资源链接: