Tutorial para desarrollar un EJB desde Cero con Maven

Crear un directorio, por ejemplo, TACS (ahora TACS será nuestro workspace). Pueden optar por el directorio que prefieran para establecer sus proyectos.

Abrir una consola y pararnos en el directorio creado anteriormente.

Arrojar la siguiente por línea de comandos. Acordarse de cambiar grupoX por el número del grupo (Ej. grupo10):

1) mvn archetype:create -DgroupId=ar.edu.utn.tacs.grupoX -DartifactId=ejb-project -DarchetypeArtifactId=maven-archetype-j2ee-simple

Nos creará un directorio ejb-project, con varios directorios y un pom, principal.

2) cambiar en /pom.xml de ejb-project:

Eliminar:

<module>site</module> dentro de <modules>

Eliminar

<build>

<pluginManagement>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-site-plugin</artifactId>

<configuration>

<unzipCommand>/usr/bin/unzip -o > err.txt</unzipCommand>

</configuration>

</plugin>

</plugins>

</pluginManagement>

</build>

Eliminar

<distributionManagement>

<site>

<id>site</id>

<name>project website</name>

<url>scp://local.company.com/websites/project.company.com/</url>

</site>

</distributionManagement>

Para la siguiente sucesión de comandos nos paramos sobre el directorio ejb-project:

3) mvn package

4) mvn clean compile install

5) mvn eclipse:eclipse

6) Importar desde Eclipse el proyecto generado.

Para ello desde el workspace hacemos:

Import->Existing Projects into Workspace y seleccionamos el project-ejb. Finalmente seleccionamos todos los proyectos y los podemos ver desde el Eclipse.

Bajar el wfullclient.jar del pendrive.

7) tirar mvn install:install-file -Dfile=wlfullclient.jar -DgroupId=ar.edu.utn.tacs.cluster.ear -DartifactId=wlfullclient -Dversion=1.0 -Dpackaging=jar -DcreateChecksum=true

8) Bajar ar.zip de tutoriales en tacs-utn.com.ar

9) Descomprimirlo en el proyecto primary source/src/main/java (van a tener que crear los directorios si no existen)

10) En el proyecto primary source, actualizar el pom.xml, agregando lo siguiente:

En <dependencies> agregar estas dos dependencias:

<dependency>

<groupId>ar.edu.utn.tacs.cluster.ear</groupId>

<artifactId>wlfullclient</artifactId>

<version>1.0</version>

</dependency>

<dependency>

<groupId>org.apache.geronimo.specs</groupId>

<artifactId>geronimo-ejb_3.0_spec</artifactId>

<version>1.0-M1</version>

</dependency>

11) En el ejb-project (el proyecto principal, que engloba al resto de los módulos), agregamos debajo de <modules>...</modules>:

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.5</source>

<target>1.5</target>

</configuration>

</plugin>

</plugins>

</build>

12) Agregar en el pom de EAR y de EJB

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-ejb-plugin</artifactId>

<configuration>

<ejbVersion>3.0</ejbVersion>

</configuration>

</plugin>

Este plugin lo tienen que agregar en la sección plugins que ya deben tener.

13) Borrar descriptores de más, como la version de este plugin esta pensado para generar ejb 2.1, nos genera un archivo de descriptores, que no lo necesitamos. Y que si esta en blanco rompe todo.

Asi que tenemos que borrar, dentro del proyecto de ejbs, la carpeta /src/main/resources/META-INF.

14) Además de agregarnos un descriptor vacio, tambien nos agrega un web.xml vacio. Un amigo. Asi que vamos a llenarlo.

Dentro del proyecto servlets/servlet/src/main/webapp/WEB-INF/web.xml tendremos que poner lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="Servlets" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Servlets</display-name>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

15) Ahora tienen que programar los lindos EJBs.

Recuerden usar las benditas annotations @Stateless y @Remote.

16) Una vez que hicieron los poquitos pasos anteriores, ahora pueden hacer

mvn clean package

Para generar los ejecutables y deployarlo en su contenedor amigo.

17) CLIENTE:

Debemos desarrollar un cliente desde un proyecto externo (un proyecto Java común).

Debemos agregar las dependencias:

- wfullclient.jar

-primary-source-1.0.jar

Al buildPath.

Haremos el próximo Main:

package test;

import javax.naming.Context;

import javax.naming.NamingException;

import weblogic.jndi.Environment;

import ar.edu.utn.tacs.ejb.Servicio1;

public class MainTest {

public static void main(String[] args) throws NamingException {

Environment env = new Environment();

env.setProviderURL("t3://ipHost:puerto");


// EJ:

// env.setProviderURL("t3://192.168.1.3:17001");


Context ctx = env.getInitialContext();

Servicio1 bean = (Servicio1) ctx.lookup("nombreBeanEnMappedName#FullyQualifiedNameInterface");

// Ej:

// Servicio1 bean = (Servicio1) ctx.lookup("tacs#ar.edu.utn.tacs.ejb.Servicio1");

bean.metodo1("Hola");

// =)

}

}

y lo ejecutamos.

Finalmente deberíamos ver en nuestro cliente cómo se consume el servicio remoto.