Je suis en train de suivre le didacticiel Java EE 6 et j'essaie de comprendre la différence entre les beans session sans état et avec état. Si les beans session sans état ne conservent pas leur état entre les appels de méthode, pourquoi mon programme agit-il ainsi?
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++;
}
}
Le client
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());
}
}
Je m'attendais à ce que getNumber renvoie 0 à chaque fois, mais il renvoie 1 et les recharges du servlet dans mon navigateur l'augmentent davantage. Le problème vient de ma compréhension du fonctionnement des beans session sans état et non des bibliothèques ou du serveur d'applications, bien sûr. Quelqu'un peut-il me donner un exemple simple de type hello world d'un bean session sans état qui se comporte différemment lorsque vous le changez en stateful?