这个问题在这里已经有了答案:
How to inject @EJB, @PersistenceContext, @Inject, @Autowired, etc in @FacesConverter?
(5 个回答)
6年前关闭。
我有一个可以访问我的数据库的无状态 EJB。
我需要 JSF 2 转换器中的这个 bean 来从 String 值参数中检索实体对象。我将 JEE6 与 Glassfish V3 一起使用。@EJB
注释不起作用并获得 NPE,因为它在 faces 上下文中并且无法访问 EJB 上下文。
我的问题是:
是否仍然可以使用 @Resource
注入(inject)此 bean?或其他注释,或 JNDI 查找,还是我需要解决方法?
解决方案
像这样进行 JNDI 查找:
try {
ic = new InitialContext();
myejb= (MyEJB) ic
.lookup("java:global/xxxx/MyEJB");
} catch (NamingException e) {
e.printStackTrace();
}
最佳答案
我从未使用过 JSF 2.0(只有 1.0),但规范的第 5.4 章说:
[...] allow the container to inject references to container managed resources into a managed bean instance before it is made accessible to the JSF application. Only beans declared to be in request, session, or application scope are eligble for resource injection.
但到目前为止,我了解,JNDI 查找应该可以解决问题。
关于jsf - 使用 JEE6 将 EJB 注入(inject) JSF 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019495/