Saya akan melalui tutorial Java EE 6 dan saya mencoba memahami perbedaan antara kacang sesi stateless dan stateful. Jika kacang sesi stateless tidak mempertahankan statusnya di antara pemanggilan metode, mengapa program saya bertindak seperti itu?
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++;
}
}
Klien
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());
}
}
Saya mengharapkan getNumber untuk mengembalikan 0 setiap kali tetapi mengembalikan 1 dan memuat ulang servlet di browser saya meningkatkannya lebih banyak. Masalahnya adalah dengan pemahaman saya tentang bagaimana kacang sesi stateless bekerja dan bukan dengan perpustakaan atau server aplikasi, tentu saja. Dapatkah seseorang memberi saya contoh tipe hello world sederhana dari kacang sesi stateless yang berperilaku berbeda ketika Anda mengubahnya menjadi stateful?