【问题描述】
springboot应用部署在PAS中,具体接口测试场景如下:
先进行数据插入,而后程序报错,由于添加了事务,正常数据应该回滚,但是目前数据还是进了库
【解决方案】
问题原因:
一般Springboot下包含DataSourceTransactionManager与JtaTransactionManager等事务管理器。
- JtaTransactionManager应用于JNDI下的事务管理。
- DataSourceTransactionManager应用于普通JDBC下事务管理。
通常JDBC事务需要DataSourceTransactionManager事务管理器,而由于某些版本SpringBoot下的JtaTransactionManager比DataSourceTransactionManager事务管理器优先级更高,所以导致事务回滚不生效。
项目中解决方案:
项目添加JDBC事务管理器配置,优先开启DataSourceTransactionManager。具体配置参考DataSourceTransactionManagerConfiguration.java