i am trying to make a simple examples of @Stateful, @Stateless and @Singleton EJB beans to help me better understand the differences. The problem is that there is no difference at all when I annotate the bean with any of @Stateful, @Stateless or @Singleton annotations.
Here is the bean:
import javax.ejb.Singleton;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
@Stateful
public class Bean {
private int counter = 0;
public int getCounter(){
return counter++;
}
}
And here is the Servlet Client:
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javaeetutorial.converter.ejb.Bean;
@WebServlet(urlPatterns="/")
public class Client extends HttpServlet{
@EJB
Bean bean;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html lang=\"en\">");
out.println("<head>");
out.println("<title>test</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet ConverterServlet at " +
request.getContextPath() + "</h1>");
try {
out.println("<form method=\"get\">");
out.println("<input type=\"submit\" value=\"Submit\">");
out.println("</form>");
out.println("<p>" + bean.getCounter() + "</p>");
out.println("<p>" + bean + "</p>");
} finally {
out.println("</body>");
out.println("</html>");
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
The expected results for me are:
@Statefull - when every different client press the button to see counting from 0
@Singleton - when any client press the button to see only one counting
@Stateless - i don't know what exactly to expect