我正在开发一个广泛使用spring事务的项目。碰巧我正在抛出一个例外而不是正确处理它不会提交或回滚交易离子。因此,即使线程停止,连接仍保持活动状态。当对Web服务器(Apache tomcat 7.0)的新请求到来时,spring提供了与新线程的早期连接。由于线程没有启动连接,因此线程无法关闭它,即.commit不起作用。因此,即使没有异常,对象也不会在后续事务中持久保存在数据库中。我如何解决问题,以便我可以检测实际问题发生在哪里,或者设计一个退出点,我可以在响应发送到浏览器之前显式关闭事务。
答案 0 :(得分:0)
从@Transactional
方法抛出的运行时未经检查的异常或错误将默认回滚该事务;返回或检查的异常将默认提交事务。您可以使用@Transactional
注释的注释类型元素告诉Spring覆盖该行为。
Spring Framework参考手册有一个entire chapter devoted to transaction management。您需要阅读并理解这是您的起点。