使用的是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>
问题已解决
啥问题?分享一下呗求分享一下,目前也是这个问题
求分享,遇到类似问题
才看到,什么问题呢?问题怎么解决的,能否告知一下呢
选择innodb
就是选择的InnoDB版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。