从 JSF 托管 Bean 调用 @EJB
我们正在使用 JDeveloper 11g。 Model 和 ViewController 项目都使用了 ADF fusion 等等。
我的 web-xml 有一个有状态会话 EJB 的 EJB 参考。 我有一个在 faces-config 中声明的托管 bean。
我正在尝试从托管 bean 内部访问 EJB。
我声明
@EJB (name ="LocationServicesEJB")
private LocationServicesEJB locationServices;
当在方法中访问 this 时,locationServices 为 null。 我在控制台中没有看到任何 JNDI 类型问题, 所以我想它甚至懒得去查找。
我需要启用注入什么的吗? 或者我是否需要将“locationServices”定义为我的 faces-config 中的托管属性?
请指教。 谢谢
We are using JDeveloper 11g.
Both a Model and ViewController project that makes use of ADF fusion and what not.
My web-xml has an EJB reference for a stateful session EJB .
I have a managed bean that's declared in faces-config.
I am trying to access a EJB from inside the managed bean.
I declare
@EJB (name ="LocationServicesEJB")
private LocationServicesEJB locationServices;
When accessing this in a method, the locationServices is null.
I do not see any JNDI type problems in the console,
so I imagine that it's not even bothering to lookup.
Do I need to enable injection or something?
Or do I need to define 'locationServices' as managed property in my faces-config?
Please advise.
Thanx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您混淆了两种不同类型的注射。
EJB 注入是通过各自的注释在 EJB 之间发生的。 这种类型由 EJB 容器(您的应用程序服务器或 OpenEJB 等)处理。
然后在普通 Java bean 之间发生“普通”注入(ala Spring)
并在 faces-config.h 中定义。 这种类型由 JSF 处理。
所以决定你想做什么。
我的建议是下载官方 Java EE 教程浏览所有主题。
You are confusing two different types of injection.
There is EJB injection that happens among EJBs by the respective annotation. This type is handled by the EJB container (your application server or OpenEJB e.t.c)
Then there is "normal" injection (ala Spring) that happens between normal Java beans
and is defined in faces-config. This type is handled by JSF.
So decide what you want to do.
My proposal would be to download the official Java EE tutorial and skim through all topics.