从JSF Managed Bean调用@EJB

时间:2009-08-13 21:43:35

标签: jsf ejb-3.0 jdeveloper oracle-adf

我们正在使用JDeveloper 11g。 模型和ViewController项目都使用ADF融合而不是。

我的web-xml有一个有状态会话EJB的EJB引用。 我有一个在faces-config中声明的托管bean。

我正在尝试从托管bean内部访问EJB。

我宣布

@EJB (name ="LocationServicesEJB")
private LocationServicesEJB locationServices;

在方法中访问它时,locationServices为null。 我没有在控制台中看到任何JNDI类型问题, 所以我想它甚至都不会费心去查找。

我需要启用注射吗? 或者我是否需要在faces-config中将'locationServices'定义为托管属性?

请指教。 感谢名单

1 个答案:

答案 0 :(得分:1)

你混淆了两种不同类型的注射剂。

  1. 通过相应的注释在EJB之间发生EJB注入。此类型由EJB容器(您的应用程序服务器或OpenEJB e.t.c)处理

  2. 然后在普通Java bean之间发生“正常”注入(ala Spring) 并在faces-config中定义。此类型由JSF处理。

  3. 所以决定你想做什么。

    我的建议是下载official Java EE tutorial并浏览所有主题。