Llamada de un EJB desde un Servlet con un JSP

1.Crearemos un proyecto EJB llamado ProyectoBeanSession marcando la opcion de tipo WAR y EJB
2.Sobre el proyecto EJB crearemos una nueva Session Bean y dejaremos el nombre por defecto NewSessionBean
  y lo incluiremos en un paquete llamado paquetebean.
3.Marcaremos la opción de tipo Session Stateful e indicaremos que será de tipo remoto y
  seleccionaremos el nombre del proyecto EJB.
4.Una vez creado el Bean, vamos a implementar un método de acción. Debemos ir al proyecto EJB, sobre la carpeta
  Enterprise Bean y seleccionamos la opción Add, Bussines Method para crearnos un método de negocio
5.Escribimos el nombre del método como getSaludo, e indicamos que el tipo que devolverá es de la clase String.
6.Nos quedará de la siguiente forma:
package paquetebean;
import javax.ejb.Stateless;
@Stateless
public class NewSessionBean implements NewSessionBeanRemote {
    @Override
    public String getSaludo() {
        return "Mensaje enviado desde un EJB @Stateless";
    }
}
7.Ahora vamos a agregar un Servlet que implementará la funcionalidad del componente EJB que nos hemos creado.
8.Sobre el proyecto WAR, seleccionaremos la opción New >> Servlet y lo llamaremos ServletLlamadaEJB
  y lo incluiremos en un paquete llamado paqueteservlets.
9.No incluiremos la información en el archivo descriptor de la aplicación, aunque si lo hiciéramos,
  la llamada al EJB seguiría siendo la misma.
10.Una vez que nos ha creado el servlet, debemos implementar la llamada, para ello utilizaremos el asistente
  de código que nos permite insertar código generado dinámicamente.
11.Sobre el código del servlet, seleccionamos la opción Insert Code
12.Nos aparecerán una serie de opciones, nosotros seleccionaremos la opción que llama a un Bean.
  Marcaremos la opción Call Enterprise Bean.
13.Al seleccionar dicha opción, nos muestra una ventana dónde debemos indicar el Bean que vamos a llamar
  desde el servlet. Buscamos el bean en el proyecto EJB y pulsamos sobre OK.
14.Podremos comprobar en el código que nos genera las librerías necesarias para realizar la llamada al
  Bean de Session:
    import javax.ejb.EJB;
    import paquetebean.NewSessionBeanRemote;
15.También nos generará un objeto para poder invocar al método getSaludo desde nuestro servlet. Dicho objeto
  podremos comprobar que contiene la anotación @EJB.
    @EJB
    private NewSessionBeanRemote newSessionBean;
16.Ahora vamos a implementar el servlet para poder escribir el saludo escrito y enviado desde el EJB:
@WebServlet(name="ServletLlamadaEJB", urlPatterns={"/ServletLlamadaEJB"})
public class ServletLlamadaEJB extends HttpServlet {
    @EJB
    private NewSessionBeanRemote newSessionBean;
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<HTML>");
            out.println("<head>");
            out.println("<title>Servlet ServletLlamadaEJB</title>"); 
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet con llamada a EJB</h1>");
            out.println(newSessionBean.getSaludo());
            out.println("</body>");
            out.println("</HTML>");
        } finally {
            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);
    }
}
17.Nos quedaría realizar la llamada al Servlet. Para ello, sobre el proyecto WAR vamos a seleccionar la página
 que trae por defecto index.html y la implementaremos.Escribiremos el siguiente código:
<%@page contentType="text/HTML" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <head>
        <meta http-equiv="Content-Type" content="text/HTML; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Bienvenido a la prueba de EJB</h1>
        <form name="form1" action="ServletLlamadaEJB">
            <input type="submit" value="Pulse para llamar al componente EJB">
        </form>
    </body>
</HTML>

No hay comentarios:

Publicar un comentario