pom parent _
|__ ejb
|__ war
Bueno creamos el proyecto parent:
mvn archetype:create -DgroupId=com.ejemplos -DartifactId=EjemploJEE
Y modificamos el pom para que quede de la siguiente manera:
4.0.0 org.assembly ExampleJEE 1.0-SNAPSHOT pom ExampleJEE http://maven.apache.org UTF-8 maven-compiler-plugin 1.6 1.6 org.apache.maven.plugins maven-eclipse-plugin 2.7 2.0 true org.apache.maven.plugins maven-javadoc-plugin org.apache.maven.plugins maven-project-info-reports-plugin jboss-repository JBoss Repository https://repository.jboss.org/nexus/content/groups/public/ default jboss jboss-ejb-api 4.2.0.GA provided junit junit 4.10 test
Creamos el proyecto ejb:
cd ExampleJEE
mvn archetype:create -DgroupId=org.assembly -DartifactId=ExampleEJB
Y cambiamos el pom de la siguiente manera:
4.0.0 ExampleJEE org.assembly 1.0-SNAPSHOT org.assembly ExampleEJB 1.0-SNAPSHOT ejb ExampleEAR http://maven.apache.org javax.persistence persistence-api 1.0 provided UTF-8 org.apache.maven.plugins maven-ejb-plugin 2.1 3.0
Ahora vamos a generar el proyecto war siempre dentro de ExampleJEE:
mvn archetype:create -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=org.assembly -DartifactId=ExampleWAR
Y cambiamos el pom de la siguiente manera:
4.0.0 ExampleJEE org.assembly 1.0-SNAPSHOT org.assembly ExampleWAR 1.0-SNAPSHOT war ExampleWAR Maven Webapp http://maven.apache.org ExampleWAR org.assembly ExampleEJB 1.0-SNAPSHOT provided javax.servlet servlet-api 2.5 provided
Pongo la dependencia a ExampleEJB como provided dado que no quiero que maven agregue el jar dentro del war después hago deploy del proyecto EJB y del WAR.
Ahora mvn clean install parados en el proyecto parent (ExampleJEE) y mvn eclipse:eclipse (si usan eclipse).
Bueno ahora importamos el proyecto a eclipse: file-> import-> Existing Projects into Workspace … Elegimos el path donde se encuentra el proyecto ExampleJEE y importamos.
Vamos a crear las siguientes clases en ExampleEJB:
La interfaz del servicio:
package org.assembly.service.api;
import javax.ejb.Remote;
@Remote
public interface HolaMundo {
String decirHola();
}
La implementación :
package org.assembly.service.impl;
import javax.ejb.Stateless;
import org.assembly.service.api.HolaMundo;
@Stateless
public class HolaMundoImpl implements HolaMundo {
/* (non-Javadoc)
* @see org.assembly.service.api.HolaMundo#decirHola()
*/
@Override
public String decirHola() {
return "Hola";
}
}
Además agregamos este archivo en src/main/resources (si no existe la carpeta la crean) y lo nombramos jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099
Y en el Proyecto web agregamos este servlet:
package org.assembly.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.assembly.service.api.HolaMundo;
public class HolaMundoServlet extends HttpServlet {
private static final long serialVersionUID = 7819040755879233852L;
private HolaMundo holaMundo = null;
public HolaMundoServlet() {
final Context context;
try {
context = new InitialContext();
holaMundo = (HolaMundo) context.lookup("HolaMundoImpl/remote");
} catch (NamingException e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
final PrintWriter out = resp.getWriter();
try {
out.println(holaMundo.decirHola());
} catch (Exception e) {
out.println(e.getStackTrace().toString());
}
}
}
Por ultimo modificamos el web.xml para que escuche el servlet:
Archetype Created Web Application hola org.assembly.web.HolaMundoServlet hola /hola.html
Ahora lo que hacemos es instalar el plugin Jboss Tools en eclipse lo podemos hacer desde el Marketplace de eclipse.
Ahora bajar Jboss 6 desde http://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip
Instalar el Jboss desde el panel de Servers menú contextual new. Luego importamos nuestros proyectos. Si todo fue bien debería verse el entorno así:
Corremos Jboss y en http://localhost:8080/ExampleWAR/hola.html deberíamos ver un “hola”

