ฉันกำลังอ่านบทช่วยสอน Java EE 6 และฉันกำลังพยายามทำความเข้าใจความแตกต่างระหว่างเซสชันถั่วไร้สัญชาติและสถานะ หากเซสชันถั่วไร้สัญชาติไม่คงสถานะระหว่างการเรียกเมธอดเหตุใดโปรแกรมของฉันจึงทำงานในลักษณะที่เป็นอยู่
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 และการโหลด servlet ซ้ำในเบราว์เซอร์ของฉันจะเพิ่มมากขึ้น ปัญหาเกิดจากความเข้าใจของฉันเกี่ยวกับวิธีการทำงานของเซสชันถั่วที่ไม่มีสถานะไม่ใช่กับไลบรารีหรือแอปพลิเคชันเซิร์ฟเวอร์แน่นอน ใครช่วยยกตัวอย่างแบบง่ายๆของ hello world ของเซสชั่นบีนไร้สัญชาติที่ทำงานแตกต่างออกไปเมื่อคุณเปลี่ยนเป็น stateful ได้ไหม