Je parcours le didacticiel Java EE 6 et j'essaie de comprendre la différence entre les beans de session sans état et avec état. Si les beans de session sans état ne conservent pas leur état entre les appels de méthodes, pourquoi mon programme agit-il comme il est?Beans Java Enterprise sans état et avec état
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 me attendais getNumber retourner 0 à chaque fois, mais il retourne 1 et rechargements du servlet dans mon navigateur augmenter plus. Le problème est avec ma compréhension du fonctionnement des beans de session sans état et non avec les bibliothèques ou le serveur d'applications, bien sûr. Est-ce que quelqu'un peut me donner un simple exemple d'un bean session sans état qui se comporte différemment lorsque vous le changez en stateful?
Connexe: http://stackoverflow.com/questions/8887140/jsf-request-scoped-bean-keeps-recreating-new-stateful-session-beans-on-every-req Cette réponse est peut-être plus simple à comprendre. Notez que les servlets sont essentiellement une application étendue (il n'y a qu'une instance de servlet dans toute l'application qui est partagée/réutilisée dans toutes les requêtes/sessions HTTP) – BalusC
hi, Vous commencez par incrémenter, puis vous obtenez la valeur .... donc vous ne pouvez pas attendre la valeur 0 – rzur2004
Je veux juste vous remercier d'avoir posé cette question, cela répond à mon problème pour le moment Je n'aurais pas pu demander mieux –