Tôi đang xem qua hướng dẫn Java EE 6 và tôi đang cố gắng hiểu sự khác biệt giữa phiên không trạng thái và phiên trạng thái. Nếu các bean phiên không trạng thái không giữ lại trạng thái của chúng giữa các lần gọi phương thức, tại sao chương trình của tôi lại hoạt động theo cách đó?
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++;
}
}
Khách hàng
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());
}
}
Tôi đã mong đợi getNumber trả về 0 mọi lúc nhưng nó đang trả về 1 và số lần tải lại servlet trong trình duyệt của tôi sẽ làm tăng nó nhiều hơn. Vấn đề là với sự hiểu biết của tôi về cách các phiên không trạng thái hoạt động và tất nhiên là không với các thư viện hoặc máy chủ ứng dụng. Ai đó có thể cho tôi một ví dụ đơn giản về kiểu hello world về bean phiên không trạng thái hoạt động khác khi bạn thay đổi nó thành trạng thái không?