【发布时间】:2013-08-08 11:55:49
【问题描述】:
我有一个简单的 Spring-Service,它(在其他任务中)使用以下代码启动一个 spring 批处理作业:
@Autowired
private JobRegistry jobRegistry;
@Autowired
private JobLauncher jobLauncher;
public void startMyJob() {
Job job = jobRegistry.getJob("myJobName");
JobParameters jobParameters = new JobParametersBuilder().toJobParameters();
jobLauncher.run(job, jobParameters);
}
只要调用 Serivce-Method 时没有活动的事务,这就可以正常工作。但是,通过活动交易,我得到了这个异常:
Caused by: java.lang.IllegalStateException: Existing transaction detected in JobRepository. Please fix this and try again (e.g. remove @Transactional annotations from client).
我无法轻易删除现有事务,因为某些框架代码不在我的范围内,因此它是隐含的。
那么,在这种情况下,我该如何开始工作呢?新工作不应该使用现有事务。它可以开始自己的事务 - 但是如何配置它以使其工作?
【问题讨论】:
标签: java spring transactions spring-batch