如何在JBOSS中获取SessionContext
我在会话bean中尝试了几种方法,如:如何在JBOSS中获取SessionContext,jboss,ejb,Jboss,Ejb,我在会话bean中尝试了几种方法,如: @Resource private SessionContext ctx; 或 或 它们都不起作用,JBOSS中出现了不同的异常 我真的很生气。任何人都可以告诉我怎么了。非常感谢 前两种解决方案(现场注入和setter方法注入)看起来不错,应该可以工作 我对第三种方法(查找方法)有疑问,因为您没有显示相应的@Resource(name=“sessionContext”)注释,但如果使用得当,它也应该可以运行 第四个选项是查找标准名称java:comp/E
@Resource
private SessionContext ctx;
或
或
它们都不起作用,JBOSS中出现了不同的异常
我真的很生气。任何人都可以告诉我怎么了。非常感谢 前两种解决方案(现场注入和setter方法注入)看起来不错,应该可以工作
我对第三种方法(查找方法)有疑问,因为您没有显示相应的@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);
}
}
}
这四种方法都是EJB3兼容的,应该可以与任何JavaEE5应用服务器一起使用,如中所述。如果没有异常,请提供异常的完整堆栈跟踪。您可以使用以下代码列出这些绑定,它将显示上下文中可用的内容。(这使用groovy代码对枚举进行迭代(每次迭代) 取决于此代码是否在ejb上下文或web上下文中运行,您将看到不同的输出
InitialContext ic = new InitialContext();
SessionContext ctx = (SessionContext) ic.lookup("java:comp/env/sessionContext");
@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);
}
}
}
Context initCtx = new InitialContext();
Context context = initCtx.lookup("java:comp") as Context
context.listBindings("").each {
println it
}