SERVICIOS REST USANDO JQUERY, JSON, JAVA Y JPA2 – PARTE II

RESTful-API

Proyecto EAR

El proyecto inicial que crearemos será un proyecto EAR.

EAR (Enterprise Archive) es un formato de archivo utilizado por Java EE, para el envasado de uno o más módulos en un solo archivo para que el despliegue de los diferentes módulos en un servidor de aplicaciones ocurra simultáneamente, de manera ordenada y coherente. También contiene archivos XML llamados descriptores de despliegue que describen cómo implementar los módulos. Ant, Maven o Gradle se utilizan para construir proyectos EAR.

Para crear un proyecto EAR, crearemos nuevo proyecto Maven – Enterprise Application

Nuevo EAR

Una vez seleccionado el proyecto, deberemos indicar los el nombre de los paquetes, compañía y el ID del artefacto, hay que rellenar a vuestro gusto. Si pulsamos continuar aparecerá esta pantalla:

maven-modules-project

Aquí tendremos la opción de establecer el servidor donde desplegaremos el proyecto EAR, la versión de Java EE y además Netbeans nos permite la opción de crear dos proyectos dentro de nuestro EAR:

  • Un módulo EJB, que puede servir para crear toda la lógica de negocio, persistencia, modelo de datos, etc.
  • Una módulo WAR que contendrá la interfaz web de nuestra aplicación.

Si pulsamos Finalizar, en nuestro navegador de proyectos, tendremos la siguiente estructura:

ProjectNavComo podemos ver, Netbeans nos ayuda mucho en la creación de los proyectos, además de los POM, dependencias y demás parámetros de configuración.

¿Qué tendremos en nuestro pom.xml de cada proyecto?

pom.xml (ear project):

<?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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
 <artifactId>mavenproject1</artifactId>
 <groupId>es.jesramgue.earproject</groupId>
 <version>1.0-SNAPSHOT</version>
 </parent>

 <groupId>es.jesramgue.earproject</groupId>
 <artifactId>mavenproject1-ear</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>ear</packaging>

 <name>mavenproject1-ear</name>

 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 
 <build>
 <plugins>
 <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>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-ear-plugin</artifactId>
 <version>2.8</version>
 <configuration>
 <version>6</version>
 <defaultLibBundleDir>lib</defaultLibBundleDir>
 </configuration>
 </plugin>
 </plugins>
 </build>
 <dependencies>
 <dependency>
 <groupId>es.jesramgue.earproject</groupId>
 <artifactId>mavenproject1-ejb</artifactId>
 <version>1.0-SNAPSHOT</version>
 <type>ejb</type>
 </dependency>
 <dependency>
 <groupId>es.jesramgue.earproject</groupId>
 <artifactId>mavenproject1-web</artifactId>
 <version>1.0-SNAPSHOT</version>
 <type>war</type>
 </dependency>
 </dependencies>
</project>

pom.xml (ejb project):

<?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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
 <artifactId>mavenproject1</artifactId>
 <groupId>es.jesramgue.earproject</groupId>
 <version>1.0-SNAPSHOT</version>
 </parent>

 <groupId>es.jesramgue.earproject</groupId>
 <artifactId>mavenproject1-ejb</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>ejb</packaging>

 <name>mavenproject1-ejb</name>

 <properties>
 <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>

 <dependencies>
 <dependency>
 <groupId>javax</groupId>
 <artifactId>javaee-api</artifactId>
 <version>7.0</version>
 <scope>provided</scope>
 </dependency>
 </dependencies>

 <build>
 <plugins>
 <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>
 <compilerArguments>
 <endorseddirs>${endorsed.dir}</endorseddirs>
 </compilerArguments>
 </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-dependency-plugin</artifactId>
 <version>2.6</version>
 <executions>
 <execution>
 <phase>validate</phase>
 <goals>
 <goal>copy</goal>
 </goals>
 <configuration>
 <outputDirectory>${endorsed.dir}</outputDirectory>
 <silent>true</silent>
 <artifactItems>
 <artifactItem>
 <groupId>javax</groupId>
 <artifactId>javaee-endorsed-api</artifactId>
 <version>7.0</version>
 <type>jar</type>
 </artifactItem>
 </artifactItems>
 </configuration>
 </execution>
 </executions>
 </plugin>
 </plugins>
 </build>

</project>

pom.xml (war project):

<?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/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
 <artifactId>mavenproject1</artifactId>
 <groupId>es.jesramgue.earproject</groupId>
 <version>1.0-SNAPSHOT</version>
 </parent>

 <groupId>es.jesramgue.earproject</groupId>
 <artifactId>mavenproject1-web</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>war</packaging>

 <name>mavenproject1-web</name>

 <properties>
 <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 
 <dependencies>
 <dependency>
 <groupId>javax</groupId>
 <artifactId>javaee-web-api</artifactId>
 <version>7.0</version>
 <scope>provided</scope>
 </dependency>
 </dependencies>

 <build>
 <plugins>
 <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>
 <compilerArguments>
 <endorseddirs>${endorsed.dir}</endorseddirs>
 </compilerArguments>
 </configuration>
 </plugin>
 <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-dependency-plugin</artifactId>
 <version>2.6</version>
 <executions>
 <execution>
 <phase>validate</phase>
 <goals>
 <goal>copy</goal>
 </goals>
 <configuration>
 <outputDirectory>${endorsed.dir}</outputDirectory>
 <silent>true</silent>
 <artifactItems>
 <artifactItem>
 <groupId>javax</groupId>
 <artifactId>javaee-endorsed-api</artifactId>
 <version>7.0</version>
 <type>jar</type>
 </artifactItem>
 </artifactItems>
 </configuration>
 </execution>
 </executions>
 </plugin>
 </plugins>
 </build>

</project>
Anuncio publicitario

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Blog de WordPress.com.

A %d blogueros les gusta esto: