【问题标题】:does @EJB Annotation work for remote call?@EJB Annotation 是否适用于远程调用?
【发布时间】:2011-10-20 16:37:10
【问题描述】:
public class Servlet2Stateless extends HttpServlet {

@EJB private HelloUserLocal helloUser;

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println(newSess.getName());


}

当我将 EJB 和 Servlet 部署在不同的服务器上时,上面的代码行会起作用吗?或者我需要通过传统方式调用它????

【问题讨论】:

    标签: dependency-injection annotations ejb


    【解决方案1】:

    如果 EJB 驻留在与您的客户端 (Servlet) 不同的服务器上,则您不能使用带有 @EJB 注释的依赖注入。

    我猜你需要使用旧的 JNDI 方式。

    【讨论】:

      【解决方案2】:

      根据 EJB 3.1 规范,您可以在各种客户端中使用 @EJB 注释,包括您的情况下的 servlet。

      问题是您在不同的主机上运行客户端和服务器。根据您使用的服务器,您可能能够使用 EJB 注释。 This post 解释了如何在 Weblogic 中做到这一点。

      不用说,无论哪种情况,您都必须将服务器 EJB 定义为 @Remote。

      【讨论】:

        【解决方案3】:

        如果您的容器也支持 CDI,您可以为执行 JNDI 查找的 bean 编写 CDI 生产者方法。然后,您至少可以将查找与注入站点分开。

        【讨论】:

          【解决方案4】:

          在独立客户端中使用依赖注入怎么样?

          【讨论】:

            猜你喜欢
            • 2011-04-12
            • 2012-11-03
            • 1970-01-01
            • 1970-01-01
            • 2014-08-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多