El siguiente artículo sobre pequeños demos o “hola mundos” va a tratar de EJB, esto son los llamados Enterprise JavaBeans y están pensados como componentes en el lado del servidor que permiten al desarrollador olvidarse de problemas relacionados con sistemas distribuidos y centrarse en el desarrollo de la lógica de negocio.
Pero vamos a empezar con ello. Para esto vamos a necesitar Eclipse, Maven, y yo como servidor voy a utilizar un Glassfish ya que recientemente ha sido publicada la versión con soporte para JavaEE 7.
Lo primero que vamos a crear es un projecto en Eclipse con Maven, al igual que en el caso anterior, sin arquetipo y sin nada. Una vez hecho esto, añadiremos en el fichero pom.xml nuestras dependencias:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wordpress.infow</groupId> <artifactId>ejb</artifactId> <version>1.0</version> <packaging>war</packaging> <name>ejb</name> <url>http://www.infow.wordpress.com</url> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <version>2.3</version> <configuration> <ejbVersion>3.1</ejbVersion> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
Tras esto lo primero que haremos será crear nuestro fichero EJB con el primer ejemplo. En este caso un simple método que recibirá un nombre y devolverá un mensaje.
EJB
@Stateless public class MessageBean { public String getMessage(String name) { return "Hello " + ((name != null) && (name.length() > 0) ? name : "anonymous"); } }
- @Stateless – Anotación que indica que es un EJB sin estado.
Y después de esto, solo necesitaremos algo que lo invoque, en mi caso por ejemplo he utilizado un Servlet para esto.
Servlet
@WebServlet(urlPatterns = "/") public class MessageServlet extends HttpServlet { private static final long serialVersionUID = 1L; @EJB MessageBean message; 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=\"es\">"); out.println("<head>"); out.println("<title>EJB Example</title>"); out.println("</head>"); out.println("<body>"); try { out.println("<p>" + this.message.getMessage("svoboda") + "</p>"); } finally { out.println("</body>"); out.println("</html>"); out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.processRequest(request, response); } @Override public String getServletInfo() { return "EJB Example"; } }
- @EJB – Realizará la carga (injección) del EJB inicializando el objeto y dejándolo listo para usar.
Simplemente con estos pocos fichero ya tendríamos un ejemplo de EJBs funcionando sin mucha complicación.
Al igual que la vez anterior, os dejo el código del proyecto para que podáis echarle un ojo y desplegarlo en vuestros servidores.
Código EJB Hello World: EJB
Al igual que en el caso anterior, se que para alguien que no conozca esta tecnología, la explicación no es muy extensa, pero no es el objetivo de esta serie de artículos como ya dije en le primero de ellos. De todas formas, si tenéis cualquier pregunta o comentario, adelante. Nos vemos.