1. EJB con Eclipse y JBoss
Hola mundo
Tutorial paso a paso de EJB
con Eclipse y JBoss
07/05/2012 Página 1
2. Instalación de requisitos
Eclipse Indigo IDE for Java EE Developers
1 Nos descargamos
Eclipse Indigo IDE for Java
EE Developers de la si-
guiente direccion:
http://www.eclipse.org/
downloads/
Descomprimir el contenido
del archivo en c:eclipse
Jboss AS7.1.1 Final
2 Descargamos
Jboss AS7.1.1
Final de
http://
www.jboss.org/
jbossas/downloads/
Descomprimir el
contenido del archi-
vo en c:JBoss
Probar que el servidor está instalado correctamente
Arrancamos el servidor ejecutando el
archivo C:JBossbinstandalone.bat.
Escribimos en el navegador la siguiente
direccion http://localhost:8080 Debe-
ríamos ver la siguiente pantalla.
07/05/2012 Página 2
3. Instalación de requisitos
JBoss tools
3 Abrimos el market-place de
Eclipse (Help->Eclipse Market-
place) y escribimos Jboss en el
cuadro de busqueda. Instalamos
Jboss tools para indigo.
4 Vamos a pestana de servidores (Window->Show View->Servers) y hacemos click en new server wizard
y lo configuramos con las siguientes opciones:
07/05/2012 Página 3
4. Creación de usuarios en el servidor
Usuario de administración
1 Creamos un usuario para la consola de administracion. Para ello ejecutamos el script
c:Jbossbinadd-user.bat
Tipo de usuario: <a> Management user
Realm: La dejamos por defecto
Username: admin
Password: 0123
Usuario de aplicación
2 Creamos otro usuario ejecutando otra vez el script c:Jbossbinadd-user.bat
Tipo de usuario: <b> Application User
Realm: La dejamos por defecto
Username: cliente
Password: cliente0123
Consola de administración
Comprobamos la consola de administracion. Abrimos el navegador y escribimos la siguiente direccion:
http://localhost:9990. Ingresamos las credenciales del usuario que acabamos de crear:
Username: admin
Password: 0123
07/05/2012 Página 4
5. Creación del Bean
Proyecto
1 Creamos un Nuevo proyecto EJB (File->new->EJB Project) y le llamamos HolaMundo-
Bean. Rellenamos los campos con las siguientes opciones:
Interface Home
2 Creamos una interface nueva dentro del paquete com.saludo y la llamamos HolaMundoHome. Escribimos
dentro el siguiente codigo e ignoramos los errores.
package com.saludo;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface HolaMundoHome extends EJBHome
{
HolaMundoRemote create() throws Re-
moteException, CreateException;
07/05/2012 Página 5
6. Creación del Bean
Interface Remote
4 Creamos una segunda interface tambien dentro del paquete com.saludo y la llamamos HolaMundoRemo-
te. Escribimos dentro el siguiente codigo:
package com.saludo;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface HolaMundoRemote extends
EJBObject{
public String saludo(String nombre) throws
RemoteException;
}
Bean
package com.saludo;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
5 Creamos una nueva clase
que llamaremos HolaMundo-
import javax.ejb.SessionBean;
Bean y escribimos dentro el
import javax.ejb.SessionContext; siguiente codigo:
public class HolaMundoBean implements SessionBean{
private static final long serialVersionUID = 1L;// Quita warning de serialización del objeto
// Nuestro método "de negocio"
public String saludo(String nombre){
System.out.println("Un cliente me ha invocado");
return "Hola, " + nombre;
}
// Métodos del ciclo de vida del Bean (obligatorios)
public void ejbCreate(){}
public void ejbActivate() throws EJBException, RemoteException {}
public void ejbPassivate() throws EJBException, RemoteException {}
public void ejbRemove() throws EJBException, RemoteException {}
public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {}
}
07/05/2012 Página 6
7. Creación del Bean
Descriptor de despliegue
6 Modificamos el descriptor de
despliegue. Para ello hacemos
click con el boton derecho del ra-
ton sobre Deployment Descriptor:
HolaMundoBean en la pestana Pro-
ject Explorer de Eclipse y seleccio-
namos Open with-> text editor.
Escribimos el siguiente codigo: <?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD
Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description>Ejemplo de EJB Simple</description>
<enterprise-beans>
<session>
<display-name>Bean HolaMundo</display-name>
<ejb-name>HolaMundo</ejb-name>
<home>com.saludo.HolaMundoHome</home>
<remote>com.saludo.HolaMundoRemote</remote>
<ejb-class>com.saludo.HolaMundoBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
07/05/2012 Página 7
8. Desplegando el Bean en el servidor
1 Vamos a la pestana de
servidores (Window->Show
view->servers). Hacemos click
con el boton derecho del raton
sobre el servidor que configu-
ramos antes JBoss 7.1 Runtime
Server y hacemos click en Add
and remove…
Anadimos nuestro proyecto al servidor:
07/05/2012 Página 8
9. Desplegando el Bean en el servidor
Comprobar que el Bean ha sido desplegado correctamente
Ahora veamos si el Bean ha sido desplegado correctamente. Iniciamos el servidor desde fuera de Eclipse eje-
cutando C:JBossbinstandalone.bat y entramos en el panel de administracion desde el navegador local-
07/05/2012 Página 9
10. Creación de la aplicación cliente
1 Creamos un nuevo proyecto File->New
Application Client Project. Lo llamamos Cliente
y seleccionamos las siguientes opciones:
2 Anadimos la librería de
cliente de jboss
(c:jbossbinclientjboss-
client.jar). Para ello pulsamos el
boton derecho del raton encima
del nombre de nuestro proyecto
en el Project Explorer de Eclipse
y seleccionamos Build Path->
configure build path… Anadimos
la librería como external jar.
En la pestana Projects anadimos
el proyecto que creamos antes,
el del Bean (es necesario que el
proyecto este abierto en Eclipse
para que se pueda incluir).
07/05/2012 Página 10
11. Creación de la aplicación cliente
3 Ahora creamos una clase que se llame BeanCliente dentro del paquete com.saludo y escribimos el
siguiente codigo:
package com.saludo;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import com.saludo.HolaMundoHome;
import com.saludo.HolaMundoRemote;
public class BeanCliente {
public static void main(String ar[]) throws Exception
{
String
JBOSS_CONTEXT="org.jboss.naming.remote.client.InitialContextFactory";;
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, JBOSS_CONTEXT);
props.put(Context.PROVIDER_URL, "remote://localhost:4447");
props.put(Context.SECURITY_PRINCIPAL, "cliente");
props.put(Context.SECURITY_CREDENTIALS, "cliente0123");
Context context = new InitialContext(props);
HolaMundoRemote
remote=(HolaMundoRemote)context.lookup("//HolaMundoBean/HolaMundo!com.saludo.HolaMundoRemote");
String a = (String)remote.saludo("paco");
System.out.println(a);
}
}
07/05/2012 Página 11
12. Creación de la aplicación cliente
4 Creamos un archivo en el proyecto que se llame jboss-ejb-client.properties y escribimos dentro
el siguiente codigo:
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=cliente
remote.connection.default.password=cliente0123
07/05/2012 Página 12
13. Ejecución
1 Iniciamos JBoss c:JBossbinstandalone.bat
2 Ejecutamos la aplicacion cliente desde Eclipse como una aplicacion normal de java
3 Deberíamos obtener el siguiente resultado
07/05/2012 Página 13