JavaEE: EJB

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.

JavaEE: EJB

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.