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部署在不同的服务器上时,将在上面的代码行工作吗?或者我需要通过传统的方式来称呼它????
答案 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)
如何在独立客户端中使用依赖注入?