我需要在EJB3无状态SessionBean (CMT,JBoss版本5)中回滚,为此我使用
sessionContext.setRollbackOnly();这个sessionContext是使用@Resource注解注入的。我的问题是: 1)在EJB3中回滚是首选方式吗?
2)如果我使用公共setter注入,为什么Jboss会抱怨部署
// throws exception on deployment.
private SessionContext sessionContext;
@Resource
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}但是下面的工作很好用:
@Resource
private SessionContext sessionContext;以下是第一种情况的例外:
javax.ejb.SessionContext is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at javax.ejb.SessionContext
at public javax.ejb.SessionContext invoice.sap.service.jaxws.SetSctx.arg0
at invoice.sap.service.jaxws.SetSctx
javax.ejb.SessionContext does not have a no-arg default constructor.
this problem is related to the following location:
at javax.ejb.SessionContext发布于 2011-04-05 02:34:50
我假设EJB是一个@WebService,这就是您收到JAXB错误的原因。尝试:
@Resource
@WebMethod(exclude=true)
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}或者,更改方法可见性或添加最终修饰符(只有公共的、非最终的、非静态的方法是webservices方法)。
发布于 2011-04-04 21:16:00
1)是
2) Dunno,可能是一个bug,可能已被弃用。我浏览了EJB3.1规范,在那里我只看到了@Resource SessionContext sessionContext表单,而EJB3.0规范也显示了setter注入。
https://stackoverflow.com/questions/5538785
复制相似问题