[英]JBAS014360: EJB 3.1 FR 4.3.14.1 concurrent access timeout on org.jboss.invocation.InterceptorContext
我正在遷移到JBoss AS 7.1和Seam 2.3,但在JBAS014360: EJB 3.1 FR 4.3.14.1 concurrent access timeout on org.jboss.invocation.InterceptorContext
有一些問題JBAS014360: EJB 3.1 FR 4.3.14.1 concurrent access timeout on org.jboss.invocation.InterceptorContext
這是我的動作類:
@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中的一些變化?
有人可以解釋一下嗎?
我找到了一種工作方式。
如果我只是把
@In(create = true)
private EntityManager em;
在MyAction.class
沒有別的,那么一切正常。
仍在尋找這種行為的解釋。
有任何想法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.