Java注入Applicationscope Bean

时间:2011-10-11 10:22:02

标签: java-ee scope ejb javabeans inject

我尝试注入一个applicationScoped Bean。 我在JSF2 ApplicationScope bean instantiation time?Get JSF managed bean by name in any Servlet related class找到了类似的主题 {{3}}

使用faces上下文中的jsf方式一切都很好(WebsitesController是AppScoped):

FacesContext context = FacesContext.getCurrentInstance();
WebsiteController websitesController = context.getApplication().evaluateExpressionGet(context, "#{websitesController}", WebsitesController.class);

注入两个溢出线程后,它不起作用。我的代码:

@ManagedBean(eager=true)
@ApplicationScoped
public class WebsitesController implements Serializable {
...}

现在我尝试了

@ManagedBean(name = "shopController")
@ViewScoped
public class ShopController {
    {Injection-Statement}
    private WebsitesController websitesController;

我尝试了以下陈述:

@ManagedProperty("#{websitesController}")
@Inject
@EJB

我的错?

1 个答案:

答案 0 :(得分:1)

我在Glassfish上的ApplicationScope也有问题。你有maven或ant webproject吗? (对于maven,我认为ApplicationScope没有按预期工作 - 用它来做)

现在回答你的问题:

当你使用@Inject时,你的WebsiteController需要@Named和@ApplicationScope(其他导入为jsf !!)并且你必须有一个beans.xml - 然后激活CDI。

当你使用@ EJB时,那么你的WebsiteController需要@Stateless。

我希望我能帮助你......