2011-10-20 39 views
6
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部署在不同的服务器上?或者我需要通过传统方式调用它?做@EJB远程调用注解工作?

回答

6

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

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

2

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

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

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

0

如果您的容器也支持CDI,那么您可以为JNDI查找的bean编写一个CDI生产者方法。然后,您至少可以将查找与注射网站分开。

0

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