我正在迁移到JBoss AS7.1和Seam2.3,但是JBAS014360: EJB 3.1 FR 4.3.14.1 concurrent access timeout on org.jboss.invocation.InterceptorContext有一些问题
下面是我的action类:
@Name("myAction")
@Scope(ScopeType.CONVERSATION)
public class MyAction implements java.io.Serializable {
@In(create = true)
private MyService myService;
@In(required = false)
@Out(required = true)
private User user;
@In(required = false)
@Out(required = false)
private Acquisition acquisition;
@Begin(join = true)
@Create
public void init() {
// more code
acquisition = myService.getNext(user);
}
public void saveHistory() {
myService.saveHistory(acquisition, user);
}
}和一个服务类。
@Stateless
@Name("myService")
public class MyServiceImpl implements MyService {
@In(create = true)
private EntityManager em;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Acquisition getNext(User user){
// em.createNamedQuery(...);
// acquisition.update(user);
// em.flush();
// return acquisition
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Acquisition saveHistory(Acquisition acquisition,User user){
history = createHistoryObject(...);
acquisition.getHistories().add(history);
return acquisition;
}
}从init()块调用getNext(User user)方法会导致异常。
从xhtml页面调用saveHistory(...)方法,并按预期工作。
init()块有什么问题?EJB 3.1或Seam 2.3中有什么变化吗?
有人能解释一下吗?
发布于 2016-06-01 20:02:24
我找到了一个方法来解决这个问题。
如果我只是把
@In(create = true)
private EntityManager em;在MyAction.class中,没有其他的,那么一切都会正常工作。
仍然在寻找这种行为的解释。
有什么想法吗?
https://stackoverflow.com/questions/36713039
复制相似问题