Java EE 6 튜토리얼을 진행 중이며 Stateless와 Stateful 세션 Bean의 차이점을 이해하려고합니다. Stateless Session Bean이 메소드 호출 사이에 상태를 유지하지 않는 경우 내 프로그램이 그대로 작동하는 이유는 무엇입니까?
package mybeans;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@LocalBean
@Stateless
public class MyBean {
private int number = 0;
public int getNumber() {
return number;
}
public void increment() {
this.number++;
}
}
클라이언트
import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import mybeans.MyBean;
import java.io.PrintWriter;
@WebServlet(name = "ServletClient", urlPatterns = { "/ServletClient" })
public class ServletClient extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
MyBean mybean;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
mybean.increment();
out.println(mybean.getNumber());
}
}
getNumber가 매번 0을 반환 할 것으로 예상했지만 1을 반환하고 브라우저에서 서블릿을 다시로드하면 더 많이 증가합니다. 문제는 물론 라이브러리 나 애플리케이션 서버가 아닌 상태 비 저장 세션 빈이 어떻게 작동하는지에 대한 나의 이해에 있습니다. 누군가가 stateful로 변경할 때 다르게 동작하는 stateless 세션 빈의 간단한 hello world 유형 예제를 줄 수 있습니까?