Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero Técnico en Telecomunicaciones
Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación
Somos expertos en Java/J2EE
Fecha de publicación del tutorial: 2008-01-17
Icefaces, JBoss, Maven2 y EJB3: Parte 1.
Voy a realizar una serie de tutoriales encadenados, que pretenden obtener un arquetipo de proyecto con las siguientes características:
IDE: Eclipse 3.1.1
Ciclo de vida del proyecto: Maven2. (usaré el plugin m2eclipse para gestionar maven2 y eclipse)
Parte de la Vista / Controlador: usaré JSF RI (incluida en JBoss) y icefaces
Parte del Modelo: EJB 3.0
Servidor de aplicaciones: JBoss 4.2.2
Base de datos: MySQL
En esta primera parte, nuestro objetivo será crear la estructura de proyectos en eclipse, crear los ficheros pom.xml de cada uno de ellos con las dependencias para empezar a trabajar.
Creando estructura de proyecto en eclipse:
Existen ya algunos tutoriales de Alejandro Pérez explicando como llevar a cabo esta tarea para que Eclipse y Maven2 puedan superar sus diferencias:
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mavenRelease
Básicamente, lo que vamos a hacer:
Crearemos un proyecto de propósito general y lo denominaremos 'Padre'.
Crearemos un proyecto EJB y lo denominaremos 'Modelo'
Crearemos un proyecto web dinámico (Dynamic Web Project) y lo denominaremos 'Web'
Borraremos los proyectos 'Modelo' y 'Web' (¡OJO!, NO borraremos su contenido.)
Usando el explorador de archivos de tu Sistema Operativo favorito, moveremos ambos proyectos ('Web' y 'Modelo') dentro de 'Padre'
Importaremos los proyectos 'Web' y 'Modelo' desde Eclipse: File – Import:

Nos habrá quedado una estructura como muestra la imagen:

Creando los ficheros pom.xml
Empezaremos por el proyecto Padre, que será el que englobe a todos los módulos. En la raíz del proyecto, crearemos un fichero pom.xml:
-
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.autentia.tutoriales.icefaces</groupId>
<artifactId>Padre</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Padre</name>
<description>
Este proyecto es el padre de todas los módulos.
Mantiene configuraciones comunes.
</description>
<modules>
<module>Web</module>
<module>Modelo</module>
</modules>
<repositories>
<repository>
<id>java-net</id>
<name>java-net</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>java.net</id>
<url>http://download.java.net/maven/1</url>
<layout>legacy</layout>
</repository>
<repository>
<id>jboss</id>
<url>http://repository.jboss.com/maven2/</url>
</repository>
</repositories>
<dependencies>
<!-- Comunes a los módulos -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
</project>
A continuación, crearemos el del proyecto Modelo:
-
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.autentia.tutoriales.icefaces</groupId>
<artifactId>Padre</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.autentia.tutoriales.icefaces</groupId>
<artifactId>Modelo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>ejb</packaging>
<name>Modelo</name>
<description>
Módulo encargado del modelo de negocio y de la persistencia de la aplicación.
Desarrollado con EJB 3.0.
</description>
<build>
<plugins>
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<ejbVersion>3.0</ejbVersion>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.0.1B</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jboss</groupId>
<artifactId>jboss-ejb-api</artifactId>
<version>4.2.0.GA</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Por último, crearemos el pom.xml para la parte Web:
-
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.autentia.tutoriales.icefaces</groupId>
<artifactId>Padre</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.autentia.tutoriales.icefaces</groupId>
<artifactId>Web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>Web</name>
<description>
Módulo encargado de la vista y el control. JSF RI e Icefaces
</description>
<dependencies>
<!-- Core J2EE -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<!-- JSF -->
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2_04-p01</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>1.2_04-p01</version>
<scope>provided</scope>
</dependency>
<!-- ICEFaces -->
<dependency>
<groupId>org.icefaces</groupId>
<artifactId>icefaces</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.icefaces</groupId>
<artifactId>icefaces-comps</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.icefaces</groupId>
<artifactId>icefaces-facelets</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>backport-util-concurrent</groupId>
<artifactId>backport-util-concurrent</artifactId>
<version>3.1</version>
</dependency>
</dependencies>
</project>
Usar el plugin m2Eclipse para gestionar los proyectos.
Configuraremos los tres proyectos para que sean gestionados por el plugin m2Eclipse: Si no lo tenéis, está explicado en: http://m2eclipse.codehaus.org/

Con esto acabamos la primera parte. En el próximo tutorial, configuraremos correctamente la parte del módulo Web para realizar un primer ejemplo.











