【发布时间】:2013-10-02 06:58:04
【问题描述】:
我想知道,是否有任何选项可以在 EJB bean 中调用托管 bean。想象一下,我们有代码:
@ManagedBean
@SessionScoped
public class MyManagedBean implements Serializable {
public String getUrl() {
return "http://www.google.com";
}
}
@Stateless
public class MyEJB {
@ManagedProperty(value = "#{myManagedBean}")
MyManagedBean myManagedBean;
public void setMyManagedBean(MyManagedBean myManagedBean) {
this.myManagedBean = myManagedBean;
}
public void call() {
// NullPointerException here
System.out.println(myManagedBean.getUrl());
}
}
我也试过这个:
@Stateless
public class MyEJB {
@EJB
MyManagedBean myManagedBean;
...
}
...但它返回不同的MyManagedBean 实例。
【问题讨论】:
-
@johny,这不是我的情况:那家伙问如何在托管 bean 中调用 EJB,但我需要在 EJB 中调用托管 bean
-
不,没有办法。 EJB 容器不知道要注入的 bean 的 JSF 上下文。了解您面临的具体问题将有助于找到有效的替代方案。
-
为什么要将 jsf bean 注入到无状态 EJB 或任何 EJB 中?
-
@perissf,有一个托管 bean,我在其中存储当前会话的一些数据(用户登录和凭据,如果它确实重要) - 那是“myManagedBean”。 “MyEJB”从数据库返回一些数据。返回什么数据取决于用户帐户类型。
标签: jsf jsf-2 ejb ejb-3.1 managed-bean