Você está na página 1de 14

Requisitos

Versin 1.5 (o superior) de la JDK de Java

NetBeans 6 como IDE de desarrollo

JBoss 4.2.x como Application Server

Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalacin de Java (el


directorio raz de la JDK, no el de la JRE).
Configuracin del servidor JBoss
Conguracin del servidor de aplicaciones JBoss en NetBeans:
1. Posicionarse en la vista Services y seleccionar el tem Servers. En el men contextual del Mouse
seleccionar la opcin Add Server
2. En la lista de servidores seleccionar la opcin correspondiente a JBoss
Universidad ORT - Arquitectura de Software
Prctico 2008
3. Especicar la ruta de instalacin del servidor JBoss
Universidad ORT - Arquitectura de Software
Prctico 2008
4. Por omisin, la conguracin del servidor utilizar el dominio default que ser accedido por el
puerto 8080. No es necesario cambiar esta conguracin. Finalizar el asistente.
Una vez nalizada la conguracin del servidor podr verse una nueva instancia de JBoss
Aplication Server en la vista Services:
5. Posicionarse sobre el servidor recin creado y seleccionar del men contextual del mouse la
opcin Start. Esto iniciar el servidor de aplicaciones.
Universidad ORT - Arquitectura de Software
Prctico 2008
Ejercicio de EJB Message-Driven Bean
Tomaremos como ejemplo el escenario donde una aplicacin java cliente requiere interactuar con otra
aplicacin java, que se ejecuta en un Application Server, para enviarle un mensaje el cual es resuelto por
un servicio que realiza un procesamiento muy pesado.
Esta aplicacin servidor est construida por dos EJB, un SessionBean y un Message-Driven Bean,
uno recibe un mensaje con la informacin para realizar el procesamiento y el otro se simula el
procesamiento.
Se denirn en NetBeans dos proyectos:

Proyecto EJB Module, para la aplicacin que ejecuta en el servidor

Proyecto Enterprise Application Client, para la aplicacin cliente


Creacin del proyecto EJB Module
1. Seleccionar del men de NetBeans la opcin para crear un nuevo proyecto. En la ventana que se
muestra, seleccionar de la lista de categoras (a la izquierda) la opcin Enterprise y de la lista de
proyectos la opcin EJB Module.
Universidad ORT - Arquitectura de Software
Prctico 2008
2. Ingresar ProcesamientoEJB como nombre de Proyecto, especicar la ubicacin del directorio
de trabajo, y el servidor de aplicaciones JBoss congurado en la primera parte de este
documento.
Universidad ORT - Arquitectura de Software
Prctico 2008
3. Una vez conrmada la nalizacin del asistente de creacin de proyectos, se podr ver en la
vista Projects la estructura del proyecto recin creado:

Carpeta Enterprise Beans: muestra los SessionBeans y Message Driven Beans denidos

Carpeta Conguration Files: contiene los archivos de conguracin de la aplicacin que se


construye, tales como: jboss.xml, ejb.xml, persistente.xml

Carpeta Server Resources: contiene los archivos de conguracin de los recursos especcos del
servidor que son utilizados por la aplicacin que se construye.

Carpeta Source Packages: contiene el cdigo fuente de la aplicacin que se construye

Carpeta Test Packages: contiene las clases utilizadas para realizar testing sobre la aplicacin que
se construye

Carpeta Libraries: contiene las libreras referenciadas por nuestra aplicacin para poder ejecutar.

Carpeta Test Libraries: contiene las libreras necesarias para el test


SessionBean
1. En la carpeta Source Packages crear un package con el nombre sample.ort.ejb, crear un
componente Session Bean con el nombre ProcesamientoSessionBean, especicando que sea de
tipo Stateless y marcar la opcin para crear su interfaz Local:
Universidad ORT - Arquitectura de Software
Prctico 2008
2. Agregar a la clase ProcesamientoSessionBean el mtodo que realizara el procesamiento
pesado. Para ello seleccionar desde el men contextual del mouse, estando en el cuerpo de la
clase, la opcin EJB Methods _ Add Business Method. Especicar el nombre del mtodo y
sus parmetros:
Universidad ORT - Arquitectura de Software
Prctico 2008
Al conrmar se puede vericar en el cdigo que el nuevo mtodo fue agregado a la clase
ProcesamientoSessionBean y a su interfaz local.
3. Completar el mtodo procesar() en la clase ProcesamientoSessionBean para que simule el
proceso pesado:
Message-Driven Bean
1. En el package sample.ort.ejb creado anteriormente, crear un componente Message-Driven Bean
con el nombre ProcesamientoMDB, especicando el destino del mensaje como Queue y de
nombre mdbQueue:
Universidad ORT - Arquitectura de Software
Prctico 2008
En este momento la estructura del proyecto es la siguiente:
Al conrmar, se puede vericar en el cdigo de la clase del MDB la Queue donde subscribir el mismo:
NetBeans por defecto crea un MDB para consumir de una cola. La conguracin del MDB mediante la
anotacin @MessageDriven debe modicarse para especicarle de que cola de mensajes va a consumir
Universidad ORT - Arquitectura de Software
Prctico 2008
los mensajes. En JBoss, es necesario agregar la propiedad destination, y especicarle el nombre en JNDI
donde ubicar la cola.
2. En el cdigo generado agregar una nueva propiedad de nombre destination y de valor queue/
procesamiento:
3. Para que el componente ProcesamientoMDB pueda delegar en el componente
ProcesamientoSessionBean el procesamiento del mensaje, es necesario crear una dependencia
entre ambos. Estando en el cuerpo de la clase ProcesamientoMDB seleccionar desde el men
contextual del mouse la opcin Enterprise Resources _ call Enterprise Bean. Seleccionar el
componente ProcesamientoSessionBean.
Al conrmar, se puede vericar en el cdigo de la clase el mecanismo de invocacin de un componente
EJB:
Universidad ORT - Arquitectura de Software
Prctico 2008
4. Implementar el mtodo onMessage() que se invocara cada vez que se publique un mensaje en la
cola queue/procesamiento.
public void onMessage(Message message) {
try {
TextMessage msg = (TextMessage) message;
procesamientoSessionBean.procesar(msg.getText());
} catch (JMSException ex) {
Logger.getLogger(ProcesamientoMDBBean.class.getName()).log(Level.SEVERE,
null, ex);
}
}
Build y deploy del proyecto en JBoss
1. Posicionarse en la raz del proyecto (ProcesamientoEJB) y seleccionar del men contextual del
mouse a opcin Build. Se podr vericar en la consola de NetBeans el empaquetamiento de los
componentes y su ubicacin para ser distribuidos al servidor:
2. Desde la raz del proyecto (ProcesamientoEJB) seleccionar del men contextual del mouse la
opcin Undeploy and Deploy. En la consola de NetBeans podr vericarse el resultado del
deploy revisando dos cosas:

el log del proyecto:


Universidad ORT - Arquitectura de Software
Prctico 2008

y el log del Server:


Universidad ORT - Arquitectura de Software
Prctico 2008
Creacin del proyecto Enterprise Application Client
1. Seleccionar del men de NetBeans la opcin para crear un nuevo proyecto. En la ventana que se
muestra, seleccionar de la lista de categoras (a la izquierda) la opcin Enterprise y de la lista de
proyectos la opcin Enterprise Application Client.
2. Ingresar ApplicationClient como nombre de Proyecto, especicar la ubicacin del directorio de
trabajo, y el servidor de aplicaciones JBoss congurado en la primera parte de este documento.
Asignar el nombre MyAppClient a la clase main del proyecto y desmarcar la opcin Set Source
Level to 1.4
Nota: dado que la versin 4.2.x de JBoss no es 100% compatible con la especicacin JEE5, la IDE
muestra por omisin la versin J2EE 1.4. De todas formas, esta versin de JBoss s soporta la
especicacin EJB3, por lo tanto no hay problema en al ejecucin.
Completar el mtodo main de la clase MyAppClient. Desde esta clase se publicara un mensaje en la
cola queue/procesamiento de mensajes anteriormente denida:
public class MyAppClient {
public static void main(String[] args) {
MyAppClient myac = new MyAppClient();
myac.enviarMensaje();
Universidad ORT - Arquitectura de Software
Prctico 2008
}

public void enviarMensaje() {
Destination queue = null;
Connection connection = null;
Session session = null;
MessageProducer messageProducer = null;
try {
Context ctx = new InitialContext();
queue = (Destination) ctx.lookup("queue/procesamiento");
ConnectionFactory factory = (ConnectionFactory) ctx.lookup
("ConnectionFactory");
connection = factory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
messageProducer = session.createProducer(queue);

TextMessage message = session.createTextMessage();
message.setText("Mensaje enviado desde " + MyAppClient.class + "...");
messageProducer.send(message);
messageProducer.close();
session.close();
connection.close();
} catch (JMSException ex) {
ex.printStackTrace();
} catch (NamingException ex) {
ex.printStackTrace();
}
}
}
Build y ejecucin de la aplicacin cliente
1. Posicionarse en la raz del proyecto (EjemploApplicationClient) y seleccionar del men
contextual del mouse la opcin Build. Se podr vericar en la consola de NetBeans el
empaquetamiento de los componentes y su ubicacin para ser distribuidos al servidor:
2. Posicionarse en la clase MyAppClient y seleccionar del men contextual del mouse la opcin
Run File
3. Vericar el log del servidor en la consola de NetBeans:
Universidad ORT - Arquitectura de Software
Prctico 2008