Java EE 6 öğreticisinden geçiyorum ve durum bilgisi olmayan ve durum bilgisi olan oturum çekirdekleri arasındaki farkı anlamaya çalışıyorum. Durum bilgisi olmayan oturum çekirdekleri durumlarını yöntem çağrıları arasında korumuyorsa, programım neden olduğu gibi davranıyor?
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++;
}
}
Müşteri
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'ın her seferinde 0 döndürmesini bekliyordum, ancak 1 döndürüyor ve tarayıcımdaki sunucu uygulamasının yeniden yüklenmesi bunu daha da artırıyor. Sorun, elbette kütüphaneler veya uygulama sunucusuyla değil, durumsuz oturum çekirdeklerinin nasıl çalıştığını anlamamla ilgili. Biri bana, durum bilgisine sahip olarak değiştirdiğinizde farklı şekilde davranan bir vatansız oturum fasulyesinin merhaba dünya tipi basit bir örneğini verebilir mi?