Transactions ARJUNA016053:无法提交事务-JavaEE6计时器
我们有一个计时器,可以触发作业并进行一些导入/导出处理。但是在提交时,我们会在标题中遇到错误。我们已经尝试了几种解决方案: 1.)创建了2个类:Transactions ARJUNA016053:无法提交事务-JavaEE6计时器,transactions,java-ee-6,entitymanager,timer-jobs,Transactions,Java Ee 6,Entitymanager,Timer Jobs,我们有一个计时器,可以触发作业并进行一些导入/导出处理。但是在提交时,我们会在标题中遇到错误。我们已经尝试了几种解决方案: 1.)创建了2个类: @Stateless public class MyBean { @Inject @JpaForJobs private EntityManager em; @Inject private MyService1 service1; @TransactionAttribute(TransactionA
@Stateless
public class MyBean {
@Inject
@JpaForJobs
private EntityManager em;
@Inject
private MyService1 service1;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void migrate(...) {
service1.create(...);
}
}
@Startup
@Singleton
public class MyService1 implements Job {
@Resource
TimerService timerService;
@Inject
private MyBean myBean;
@Timeout
public void trigger(Timer timer) {
migrate();
}
private void migrate() {
myBean.migrate();
}
}
有时是有效的,但当关系变得复杂时,就会失败。客户有学生有家长有猫的例子
我还尝试了bean管理的事务,但结果相同:
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class MyBean {
@Inject
@JpaForJobs
private EntityManager em;
@Inject
private MyService1 service1;
public void migrate(...) {
utx.begin();
service1.create(...);
utx.commit();
}
}
@Startup
@Singleton
public class MyService1 implements Job {
@Resource
TimerService timerService;
@Inject
private MyBean myBean;
@Timeout
public void trigger(Timer timer) {
migrate();
}
private void migrate() {
myBean.migrate();
}
}
有什么想法或建议吗?谢谢。结果证明方法1是有效的,我只需要更换: @TransactionAttribute(TransactionAttributeType.REQUIRED) 与 @TransactionAttribute(TransactionAttributeType.REQUIRES\u NEW) 此外,我在解析xml文件时遇到一些问题。当心那些懒洋洋的田野和小海狸