我正在实现一个 EJB 应用程序。在这一点上,我需要一笔交易。我需要连续执行 3 个方法,如果一个方法失败,所有内容都应该回滚。在这里: http: //www.conceptgo.com/gsejb/eb04.html,我找到了一个教程。我的代码:
try {
javax.transaction.UserTransaction ut = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
ut.begin();
Feeds feed = loadFeed(url);
try{
em.persist(feed);
uf.setFeedId(feed.getFeedId());
uf.setUserId(user_id);
em.persist(uf);
}catch (EntityExistsException e){
ut.rollback();
return false;
}catch (IllegalArgumentException ea){
ut.rollback();
return false;
}
if (feed.getFeedId()!= null && feed!=null) {
ut.commit();
}else{
ut.rollback();
return false;
}
当我运行我的应用程序时,我收到下一条错误消息:
Caused by: java.lang.IllegalStateException: BaseTransaction.checkTransactionState
- ARJUNA016051: thread is already associated with a transaction
有谁知道是什么原因以及如何解决?