繁体   English   中英

Spring MVC =交易不再有效

[英]Spring MVC = The transaction is no longer active

我有一个基于Spring Web model-view-controller(MVC)框架的项目。 Spring Web模型视图控制器(MVC)框架的版本为3.2.8,部署在WebLogic Server版本:12.1.2.0.0上

我在1个查询中有此错误

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社区的根本原因:

通常,这在事务完成时发生,但是此事实将被忽略,并且应用程序尝试继续处理并发出在TX之外发生的JDBC语句。 此问题的根源可能是通过使用该连接的一系列方法传递的Connection对象。 这些方法之一提交TX,从而使连接无效。

资源链接: https : //community.oracle.com/thread/734370

找到了一些解决问题的建议。

第一个建议:

请尝试将您的weblogic数据源设置从“非XA”更改为“ XA”。 您应该摆脱此异常。

资源链接: 交易不再有效-状态:“已提交”

第二个建议:

取消选中“支持全局事务”,然后重新启动服务器。

资源链接: 在PRPC中错误:事务不再处于活动状态-状态:“已提交”

第三条建议:

这个问题的真正解决方案是异步处理。 但它可能不适合您的情况。

第一个如果要对Oracle进行jdbc调用,则可以在数据库上执行查询时设置查询超时。 查询超时后,Oracle将为您提供一个可以处理它的异常。 因此,基本上,在这种情况下,您实际上并没有取消EJB请求。 但这可能会解决您的问题。

资源链接: https : //coderanch.com/t/68079/transaction-rollback-commit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM