我有两个在不同时间运行的计划任务 . 第一项任务是每5秒运行一次,第二项任务是每10分钟运行一次 .
@EnableScheduling
public class ScheduledTask {
@Autowired
private taskService taskService;
@Scheduled(every 5 second)
public void scheduleTaskA() {
taskService.taskA()
}
@Scheduled(every 10 minute)
public void scheduleTaskB() {
taskService.taskB()
}
}
public class TaskServiceImpl implements TaskService {
@PersistenceContext
private EntityManager entityManager;
void taskA(){
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("callStoreProcedure1");
if(query.execute())
query.getSingleResult();
}
void taskB(){
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("callStoreProcedure2");
if(query.execute())
query.getSingleResult();
}
}
每次第二个任务运行时,它都会抛出 java.lang.IllegalStateException: Session/EntityManager is closed
. 看起来第一个任务是关闭entityManager . 如何在不更改@PersistenceContext注释的情况下使其无效?