मैं जावा ईई 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());
}
}
मैं हर बार 0 पाने के लिए getNumber की उम्मीद कर रहा था, लेकिन यह 1 लौट रहा है और मेरे ब्राउज़र में सर्वलेट के पुनः लोड करने से यह अधिक बढ़ जाता है। समस्या मेरी समझ में यह है कि पुस्तकालयों या एप्लिकेशन सर्वर के साथ स्टेटलेस सत्र सेम कैसे काम करता है और नहीं। क्या कोई मुझे एक सरल सत्रीय दुनिया का उदाहरण दे सकता है जो एक स्टेटलेस सेशन बीन का उदाहरण है जब आप इसे स्टेटफुल में बदलते हैं तो अलग तरह से व्यवहार करते हैं?