Ich gehe durch die Java EE 6-Lernprogramm und ich versuche, den Unterschied zwischen Stateless und Stateful Session-Beans zu verstehen. Wenn statusfreie Session-Beans ihren Status zwischen Methodenaufrufen nicht beibehalten, warum verhält sich mein Programm so wie es ist?Stateless und Stateful Enterprise Java Beans
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++;
}
}
Der Kunde
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());
}
}
ich getNumber erwartete jedes Mal zurück 0, aber es 1 und Neuladen des Servlets in meinem Browser zurückkehrt erhöhen es. Das Problem besteht darin, dass ich weiß, wie zustandslose Session-Beans funktionieren und natürlich nicht mit den Bibliotheken oder dem Anwendungsserver. Kann mir jemand ein einfaches Hallo-Welt-Beispiel für eine Stateless-Session-Bean geben, das sich anders verhält, wenn Sie es in Stateful ändern?
Verwandte: http://stackoverflow.com/questions/8887140/jsf-request-scoped-bean-keeps-recreating-new-stateful-session-beans-on-every-req Diese Antwort ist vielleicht einfacher verstehen. Beachten Sie, dass Servlets grundsätzlich anwendungsspezifisch sind (es gibt nur 1 Servlet-Instanz, die für alle HTTP-Anfragen/Sitzungen verwendet wird). – BalusC
hi, Sie inkrementieren zuerst und erhalten dann den Wert .... Sie können also keinen Wert von 0 erwarten – rzur2004
Ich möchte Ihnen nur dafür danken, dass Sie dies fragen, es adressiert mein Problem im Moment. Ich hätte das besser nicht fragen können –