我在会话bean中尝试了几种方法,例如:
@Resource
private SessionContext ctx;
Run Code Online (Sandbox Code Playgroud)
要么
private SessionContext ctx;
@Resource
private void setSessionContext(SessionContext ctx) {
this.sctx = ctx;
}
Run Code Online (Sandbox Code Playgroud)
要么
InitialContext ic = new InitialContext();
SessionContext ctx = (SessionContext) ic.lookup("java:comp/env/sessionContext");
Run Code Online (Sandbox Code Playgroud)
它们都没有工作,JBOSS中出现了不同的异常.
我真的生气了.任何人都可以告诉我什么是错的.非常感谢!
Pas*_*ent 14
两个第一个解决方案(现场注入和设定方法注入)看起来很好,应该可行.
我对第三个(查找方法)有疑问,因为你没有显示相应的@Resource(name="sessionContext")注释,但如果使用得当它也应该工作.
第四种选择是查找标准名称 java:comp/EJBContext
@Stateless
public class HelloBean implements com.foo.ejb.HelloRemote {
public void hello() {
try {
InitialContext ic = new InitialContext();
SessionContext sctxLookup =
(SessionContext) ic.lookup("java:comp/EJBContext");
System.out.println("look up EJBContext by standard name: " + sctxLookup);
} catch (NamingException ex) {
throw new IllegalStateException(ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这四种方法都符合EJB 3标准,并且绝对可以与任何Java EE 5应用服务器一起使用,如在EJB 3中获取EJBContext的4种方法中提醒的那样.如果不是,请提供您获得的异常的完整堆栈跟踪.
| 归档时间: |
|
| 查看次数: |
18986 次 |
| 最近记录: |