Llamada de un EJB desde un Servlet

1.Creamos un nuevo proyecto EnterpriseAplication con el modulo EJB y WAR con GlassFishServer
2.Sobre el proyecto EJB boton derecho y creamos un SessionBean indicando que es Remote usando nuestro mismo
  proyecto EJB por si queremos usarlo en otros proyectos, con sesion Stateless(sin estado)
3.Nos vamos a la carpeta EnterpriseBeans y en la sesion bean creada pulsamos sobre Add y sobre BusinessMethod
  y lo llamamos getDoble con ReturnType java.lang.String y en Parameters agregamos un numero de tipo int
4.La clase nos quedara de la siguiente manera para que vuelva a ser recuperada:
@Stateless
public class NewSessionBean implements NewSessionBeanRemote {
    @Override
    public String getDoble(int numero) {
        int resultado = numero*2;
        return "El doble del numero es "+resultado;
    }
}
5.Nos vamos al proyecto WAR, que es el que usuario vería y el que consumiría los EJB
6.Creamos un Servlet que llamara al EJB creado dentro de la carpeta Source Packages en el WAR
7.Pulsamos boton derecho sobre el codigo del Servlet dentro del try y hacemos una llamada al EJB
  mediante InsertCode >> Call Enterprise Bean y seleccionamos nuestro Session bean dentro del EJB lo que
  nos introducirá el codigo
  @EJB
  private NewSessionBeanRemote newSessionBean;
8.En el Servlet introduciremos una variable num que recogerá el valor que venga de un futuro JSP que creemos
  int num = Integer.parseInt(request.getParameter("txtnumero"));
9.Queremos utilizar este numero para llevarlo a nuestro Bean y calcular el doble:
  String texto = newSessionBean.getDoble(num);
  out.println(texto);
10.Creamos la pagina HTML donde introduciremos el numero a calcular el doble:
    <form name="form1" action="NewServletLlamada">
            Introducir un numero: <input type="text" name="txtnumero"><br>
            <input type="submit" name="Calcular Doble">
        </form>
11.El Servlet nos quedará:
@WebServlet(name = "NewServletLlamada", urlPatterns = {"/NewServletLlamada"})
public class NewServletLlamada extends HttpServlet {
    @EJB
    private NewSessionBeanRemote newSessionBean;
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet NewServletLlamada</title>");           
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet NewServletLlamada at " + request.getContextPath() + "</h1>");
            int num = Integer.parseInt(request.getParameter("txtnumero"));
            String texto = newSessionBean.getDoble(num);
            out.println(texto);
            out.println("</body>");
            out.println("</html>");
        }
    }

No hay comentarios:

Publicar un comentario