问题描述:
spring定时任务报出Connection is read-only
场景:
1.spring配置:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
2.定时任务中调用service方法:
@Transactional(readOnly = false)
public ResultBean saveUmsReInfo(){省略};
3.定时器:
@Scheduled(cron = "0 30 10 * * ?")
public void reconciliation(){省略};
详细描述:在junit中调用saveUmsReInfo完全没有问题,但是放在定时任务中,就总是报Connection is read-only,检查过配置文件中并没有写过<tx:method name="*" read-only="true" />之类的配置,问题不是出现在配置文件中。
解决方法:在定时器中加上@Transactional(readOnly = false),我是直接在定时器的类上加了这句配置,定时任务正常运行。