【问题标题】:EJB injection in Servlet with glassfish4使用 glassfish4 在 Servlet 中注入 EJB
【发布时间】:2016-02-29 16:05:32
【问题描述】:

我有一个 servlet 类,它在 glassfish3 和 Java-7 上运行良好。

耳朵包含这些资源:

  • x.ear
    • x.war
    • x-interface.jar
    • x-ejb.jar

war 文件中的 Servlet 如下所示:

@Path("/X")
@ManagedBean
public class XWebservice {

    @EJB
    SessionBeanRemoteInterface bean;

    @GET
    public String get() {
        return bean.sessionBeanMethod();
    }
}

ejb-jar 中的 bean 如下所示:

@Stateless
public class XBean implements SessionBeanRemoteInterface {
}

为什么这在使用 Java-8 的 glassfish 4.1.1 中不再起作用了? (NullPointerException, bean 为空)

手动查找,但工作正常:

new InitialContext().lookup(SessionBeanRemoteInterface.class.getName()).sessionBeanMethod();

【问题讨论】:

  • 您能补充一下来自 GlassFish 的实际错误消息吗?
  • @Mike 这里是 NullPointerException:bean.sessionBeanMethod()。如果我打印bean的值,那么输出就是null
  • 您是否尝试过使用@EJB(lookup="...")

标签: java servlets jakarta-ee glassfish-4.1


【解决方案1】:

你有多少实现?如果不止一个,则使用限定词 (https://docs.oracle.com/javaee/6/tutorial/doc/gjbck.html) 或替代词 (https://docs.oracle.com/javaee/6/tutorial/doc/gjsdf.html)。如果容器无法选择注入则不起作用。

【讨论】:

    【解决方案2】:

    我通过向 Web 服务添加 @RequestScoped 注释解决了这个问题。

    或者@Singleton 似乎也可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2016-03-25
      相关资源
      最近更新 更多