spring+mybatis+druid+atomikos+mysql分布式事务日志打印显示回滚但是插入了数据库

发布于 2022-01-06 14:37:28 字数 2443 浏览 909 评论 7

 

使用的是spring+mybatis+druid+atomikos+mysql,

xml配置如下,确实在执行到service层的save*的方法时有日志:

INFO : com.atomikos.icatch.imp.BaseTransactionManager - createCompositeTransaction ( 300000 ): created new ROOT transaction with id com.atomikos.spring.jdbc.tm0000100111

然后在报错的时候,不管是自己抛的运行时异常还是插入已有主键故意报错时都会打印:

INFO : com.atomikos.icatch.imp.CompositeTransactionImp - rollback() done of transaction com.atomikos.spring.jdbc.tm0000100111

但是奇怪的是并没有回滚,数据依然插入了数据库 。

现在由自己查阅资料已知的是:

1.数据库是innodb。支持事务

2.事务配置应该没问题

3.service确实是在spring中加载,controller在spring-servlet的xml中加载。

下面是配置文件,pointcut切点没问题,是我删的。

请大神解答,到底是为什么可以打印日志,但是不回滚

 

<aop:config  expose-proxy="true">
		<aop:pointcut expression="execution(* (..))"这句修改了,保证正确
			id="datasource-pointcut" />
		<aop:advisor pointcut="execution(*..*Service.*(..))"这句修改了,保证正确
			advice-ref="txAdvice" />
		<aop:aspect ref="dynamicDataSourceAspectJ">
			<aop:before method="switchDataSource" pointcut-ref="datasource-pointcut" />
		</aop:aspect>
</aop:config>

<tx:advice id="txAdvice" transaction-manager="jtaTransactionManager">
		<tx:attributes>
			<tx:method name="insert*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED"  />
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="edit*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="remove*" propagation="REQUIRED" />
			<tx:method name="autoCommit*" propagation="REQUIRES_NEW" />
			<tx:method name="*" propagation="NOT_SUPPORTED" read-only="true" />
		</tx:attributes>
	</tx:advice>
	<bean id="jtaTransactionManager"
		class="org.springframework.transaction.jta.JtaTransactionManager"
		scope="prototype">
		<property name="transactionManager" ref="atomikosTransactionManager" />
		<property name="userTransaction" ref="atomikosUserTransaction" />
		<property name="allowCustomIsolationLevels" value="true" />
		<property name="globalRollbackOnParticipationFailure" value="true" />
	</bean>

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

2022-01-08 04:06:51

就是选择的InnoDB

南汐寒笙箫 2022-01-08 04:01:23

问题怎么解决的,能否告知一下呢

如日中天 2022-01-08 02:28:01

才看到,什么问题呢?

谢绝鈎搭 2022-01-08 00:54:12

求分享,遇到 类似问题

时光清浅 2022-01-08 00:50:14

求分享一下,目前也是这个问题

奈何桥上唱咆哮 2022-01-08 00:38:19

啥问题?分享一下呗

断爱 2022-01-08 00:00:38

问题已解决

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文