Servlets 只创建了一个无状态bean

Servlets 只创建了一个无状态bean,servlets,ejb,stateless-session-bean,Servlets,Ejb,Stateless Session Bean,我创建了一个会话bean并在servlet中调用它方法,如下所示: @WebServlet(name = "NewServlet1", urlPatterns = {"/NewServlet1"}) public class NewServlet1 extends HttpServlet { @EJB NewSessionBean bean; protected void processRequest(HttpServletRequest request, HttpServletResponse

我创建了一个会话bean并在servlet中调用它方法,如下所示:

@WebServlet(name = "NewServlet1", urlPatterns = {"/NewServlet1"})
public class NewServlet1 extends HttpServlet {
@EJB NewSessionBean bean;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet NewServlet1</title>");            
        out.println("</head>");
        out.println("<body>");
             out.println("<h2>"+bean.helloWorld()+"</h2>");
        out.println("<h1>Servlet NewServlet1 at " + request.getContextPath() + "</h1>");
        out.println("</body>");
        out.println("</html>");
    } finally {            
        out.close();
    }
}

当我部署这些源代码时,我在Glassfish中看到只创建了会话bean的一个实例—“Constructor works”只出现过一次。当我尝试从多台计算机刷新我的站点时,我看到只有一个bean实例存在。当我创建两个使用NewSessionBean的servlet时,仍然只有一个实例。当我读到会话bean时,我理解应该有一个bean池,所以应该有几个bean。那么为什么在我的示例中只创建了一个bean呢。请帮助我了解这种情况。

只创建了一个servlet实例,由于它可以快速生成响应,因此不需要额外的无状态bean。如前所述,如果将
helloWorld
实现为一个长操作,并在操作完成之前生成一个新请求,您将看到新bean被创建

@Stateless
public class NewSessionBean {
private int counter = 0;

public NewSessionBean() {
    System.out.println("Constructor works");
}

public String helloWorld(){

return "Hello you are: "+counter++;
}