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