@EJB Annotation是否适用于远程呼叫?

时间:2011-10-20 16:37:10

标签: dependency-injection annotations ejb

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部署在不同的服务器上时,

将在上面的代码行工作吗?或者我需要通过传统的方式来称呼它????

4 个答案:

答案 0 :(得分:7)

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

我想你需要采用旧的JNDI方式。

答案 1 :(得分:2)

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

问题是您在不同的主机中运行客户端和服务器。根据您使用的服务器,您可以使用EJB注释。 This post解释了如何在Weblogic中执行此操作。

毋庸置疑,无论如何都必须将服务器EJB定义为@Remote。

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

如何在独立客户端中使用依赖注入?