Я переглядаю підручник з Java EE 6 і намагаюся зрозуміти різницю між компонентами сеансів без стану та станом. Якщо сеансові компоненти без стану не зберігають свого стану між викликами методів, чому моя програма діє так, як є?
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++;
}
}
Клієнт
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 поверне 0 кожного разу, але він повертає 1, і перезавантаження сервлета в моєму браузері збільшує його більше. Проблема полягає в моєму розумінні того, як працюють компоненти сеансів без стану, а не в бібліотеках або на сервері додатків, звичайно. Чи може хто-небудь навести мені простий приклад типу привітний бін сеансу без громадянства, який поводиться інакше, коли ви змінюєте його на статус із станом?