使用JEE6将EJB注入JSF转换器

Mic*_*vin 12 jsf dependency-injection glassfish java-ee ejb-3.0

我有一个无状态的EJB加入我的数据库.我需要在JSF 2转换器中使用此bean来从String值参数中检索实体对象.我正在使用JEE6和Glassfish V3.

@EJB 注释不起作用并获得NPE,因为它位于faces上下文中,并且它无法访问EJB上下文.

我的问题是:是否仍然可以使用@Resource其他注释或JNDI查找来注入此bean ,还是需要解决方法?


像这样执行JNDI查找:

  try {
   ic = new InitialContext();
   myejb= (MyEJB) ic
     .lookup("java:global/xxxx/MyEJB");   
  } catch (NamingException e) {
   e.printStackTrace();
  }
Run Code Online (Sandbox Code Playgroud)

ewe*_*nli 6

我从未使用过JSF 2.0(仅1.0),但规范的第5.4章说:

[...]允许容器在对JSF应用程序进行访问之前,将对容器受管资源的引用注入到托管bean实例中.只有 声明在请求,会话或应用程序范围内的bean才能用于资源注入.

但到目前为止,据我所知,JNDI查找应该可以解决问题.

  • @ bugspy.net:还有很多无知的问题? (3认同)
  • 不要使用@EJB注释.使用InitialContext获取目标组件. (2认同)