Ejercicios sesión 1

En los ejercicios de esta primera sesión vamos a:

Ejercicio 1: Instalación de WebLogic 7.0

Suponemos que el servidor de aplicaciones está instalado en el directorio del usuario. Por ejemplo, en el directorio

/home/domingo/bea

Denominaremos este directorio WL_INSTALL. Vamos a necesitar que las variables de entorno tengan los valores que aparecen en la siguiente tabla

Variable de entorno Valor
WL_INSTAL Directorio donde se ha instalado el todos los componentes de la plataforma WebLogic. Por ejemplo: /home/domingo/bea
WL_HOME Directorio donde se ha instalado el servidor WebLogic. Por ejemplo: $WL_INSTALL/weblogic700/server
JAVA_HOME Directorio donde se ha instalado la última versión de jdk. Por ejemplo: /usr/local/jdk1.3.1
CLASSPATH $JAVA_HOME/lib/tools.jar:$WL_HOME/lib/weblogic_sp.jar:$WL_HOME/lib/weblogic.jar:.

1. Edita el fichero $WORK/bin/setEnv y modifica $WL_INSTALL con el valor donde está instalado el servidor de aplicaciones

2. Actualiza las variables de entorno ejecutando el scipt setEnv

% cd $WORK/bin
% . ./setEnv

Crear el dominio vacío moduloejb

El servidor WebLogic 7.0 proporciona un Asistente de Configuración de Dominio que debe usarse para crear dominios vacíos. Ejecuta el asistente con los comandos

% cd $WL_INSTALL/weblogic70/common/bin
% ./dmwiz.sh

y crea un dominio vacío de un Standalone Server llamado moduloejb siguiendo los sencillos pasos ilustrados en las siguientes figuras:

1. Define el tipo de dominio (WLS Domain sin aplicaciones) y el nombre (moduloejb):

2. Define el funcionamiento del servidor. Por sencillez, vamos a preferir que sea standalone. Después, todo lo que probemos de esta forma va a poder funcionar en modo gestionado o incluso en clusters de servidores.

3. Define la localización del directorio donde se va a instalar el dominio. Acepta la opción por defecto ($WL_INSTALL/user_projects/moduloejb)

4. Define un nombre del servidor y unos puertos de escucha del mismo. Acepta la opción por defecto.

5. Define el login y password del administrador. Por ejemplo login: system, password: weblogic.

6. Termina aceptando las dos pantallas informativas que vienen a continuación. El dominio habrá sido creado en el directorio /home/domingo/bea/user_projects/moduloejb y en ese directorio estará instalado el servidor de aplicaciones preparado para ese dominio.

En su momento, cuando los ejercicios lo requieran, deberás crear los recursos: pool JDBC, TX DataSource y JMS.

Arrancar el servidor de aplicaciones

Una vez creado el dominio, ya puedes arrancar el servidor de aplicaciones, con los siguientes comandos en una ventana del sistema:

% cd $WL_INSTALL/user_projects/moduloejb
% ./startWebLogic.sh

En la misma ventana del sistema te pedirá el login y contraseña de administrador. Teclea lo mismo que en la ventana de inicialización.

Comprobar que el servidor está en marcha

1. Desde un ordenador cualquiera lanza un navegador y conéctarte a la URL http://servidor:7001/console, siendo servervidor el ordenador en el que acabamos de arracar el servidor de aplicaciones. Por ejemplo:


2. Introduce el login y la contraseña con la que hemos instalado el servidor de aplicaciones. Entrarás en la aplicación web con la que podemos administrar el servidor de aplicaciones.


Ejercicio 2: Compilar y desplegar el bean de sesión

El proceso de compilación, empaquetamiento, despliegue y prueba de un EJB de sesión y una aplicación cliente consta de los siguientes pasos:

  1. Compilar los ficheros JAVA que forman el EJB y la aplicación cliente
  2. Empaquetar los ficheros CLASS y el descriptor de despliegue en un fichero EJB JAR
  3. Personalizar el fichero EJB JAR para el WebLogic con el WebLogic Builder
  4. Desplegar el EJB JAR en el servidor de aplicaciones
  5. Probar la aplicación cliente

Pasos previos:

Chequear las variables de entorno

Asegurate de que las variables de entorno tienen los valores que aparecen en la siguiente tabla. Si no es así, actualízalas de nuevo tal y como se indica en el ejercicio 1.

Variable de entorno Valor
WL_INSTAL Directorio donde se ha instalado el todos los componentes de la plataforma WebLogic. Por ejemplo: /home/domingo/bea
WL_HOME Directorio donde se ha instalado el servidor WebLogic. Por ejemplo: $WL_INSTALL/weblogic700/server
JAVA_HOME Directorio donde se ha instalado la última versión de jdk. Por ejemplo: /usr/local/jdk1.3.1
CLASSPATH $JAVA_HOME/lib/tools.jar:$WL_HOME/lib/weblogic_sp.jar:$WL_HOME/lib/weblogic.jar:.

Obtener el código fuente con los ejemplos

El código fuente para los componentes se encuentra en la misma página donde se encuentran estos apuntes, en el fichero ejercicio1.zip.

1. Supongamos que el directorio de trabajo es

/home/domingo/ejb

Creamos una variable de entorno para definir el directorio de trabajo.

% export WORK=/home/domingo/ejb

2. Copiamos y descomprimimos el directorio de ejemplos en el directorio de trabajo

% cp ejercicio1.zip $WORK
% cd $WORK
% unzip ejercicio1.zip

Los ficheros que se han descomprimido son:

HelloWorldSLBean/HelloWorldBean.java
HelloWorldSLBean/HelloWorldRemoteHome.java
HelloWorldSLBean/HelloWorldRemote.java
HelloWorldClient.java
ejb-jar.xml

En la próxima sesión explicaremos con más detalle el contenido de todos estos ficheros. Todos ellos implementan un bean de sesión sin estado con un único método, hi(), que devuelve un string con el típico saludo “Hello, world”. Vamos a ver en los pasos siguientes cómpilar los ficheros, empaquetar el bean, desplegarlo en el servidor de aplicaciones y probarlo desde una aplicación cliente. Aunque se pueden utilizar herramientas avanzadas, como el ant, para compilar los beans, hemos preferido hacerlo de la manera más simple posible. Así sabemos en todo momento qué es lo que estamos haciendo.

1. Para compilar los ficheros vamos al directorio de ejemplo y llamamos a javac (ya hemos actualizado el CLASSPATH en un paso anterior):

% cd $WORK/HelloWorld
% javac HelloWorldSLBean/*.java

2. Compilar y ejecutar la aplicación cliente. Si miramos el código fuente de la aplicación, lo único que hace es conectarse con el bean (la llamada clase Home del bean), crear una instancia del bean y pedir el método hi() de esa instancia. Al no estar el bean desplegado en el servidor de aplicaciones, la aplicación cliente generará un error:

% javac HelloWorldClient.java
% java HelloWorldClient
javax.naming.NameNotFoundException: Unable to resolve 'HelloWorldEJB' Resolved: '' 
Unresolved:'HelloWorldEJB' ; remaining name 'HelloWorldEJB'
        at weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:109)
        at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:262)
        at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:229)
        at weblogic.jndi.internal.ServerNamingNode_WLStub.lookup(Unknown Source)
        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:337)
        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:332)
        at javax.naming.InitialContext.lookup(InitialContext.java:350)
        at HelloWorldClient.main(HelloWorldClient.java:15)

Empaquetar el bean

Debemos construir un fichero JAR, que llamaremos helloworld-ejb.jar, con el bean compilado. Para ello:

% mkdir META-INF
% mv ejb-jar.xml META-INF/
% jar cvf helloworld-ejb.jar META-INF/* HelloWorldSLBean/*.class
manifest agregado
agregando: META-INF/ejb-jar.xml(entrada = 663) (salida= 330)(desinflado 50%)
agregando: HelloWorldSLBean/HelloWorld.class(entrada = 240) (salida= 182)(desinflado 24%)
agregando: HelloWorldSLBean/HelloWorldBean.class(entrada = 710) (salida= 363)(desinflado 48%)
agregando: HelloWorldSLBean/HelloWorldHome.class(entrada = 288) (salida= 199)(desinflado 30%)

Desplegar el bean de sesión usando el WebLogic Builder

El WebLogic Builder es una aplicación Java que se distribuye junto con el servidor WebLogic y que tiene como principal utilidad la configuración de ficheros JAR, WAR y EAR para el posterior despliegue en el servidor. Vamos a ver cómo funciona, desplegando el fichero helloworld-ejb.jar

1. Lanzar la aplicación WebLogic Builder:

% cd $WL_INSTALL/weblogic700/server/bin
% ./startWLBuilder.sh

2. Abrir el fichero helloworld-ejb.jar con el programa WebLogic Builder

Aceptar cuando pregunta si debe crear el fichero de descripciones weblogic-ejb-jar.xml (IMPORTANTE: el fichero weblogic-ejb-jar.xml es necesario para que el bean se despliegue correctamente en el servidor de aplicaciones. Salvar el paquete con la opción File > Save para que el fichero helloworld-ejb.jar se actualize con este fichero).

3. Cambiar el nombre JNDI del bean. Por defecto, el nombre JNDI es el mismo que el nombre del bean (HelloWorld). Vamos a cambiarlo, poniendo como nombre HelloWorldEJB. Este nombre es al que se hace referencia en la aplicación cliente. Para cambiar el nombre pincha en el bean HelloWorld que aparece en la parte superior derecha de la ventana. La ventana principal de la aplicación cambiará y te permitirá modificar ciertas propiedades del bean, entre ellas el nombre JNDI. Pon como nombre HelloWorldEJB y a continuación salva el bean.

3. Para desplegar el bean en el servidor, primero hay que conectarse a él con la aplicación. Selecciona la opción Tools > Connect to server. Aparece una ventana de diálogo en la que puedes dar la dirección de red donde se encuentra el servidor, el nombre del servidor, puerto, login y password. Completa el login y password de administrador.

4. Selecciona la opción Tools > Deploy Module.

Pulsa el botón Deploy Module. Si todo funciona correctamente el bean se desplegará en el servidor.

5. Comprueba que el bean se ha desplegado en el servidor de aplicaciones. Para ello conéctate con el navegador a la dirección http://localhost:7001/console y selecciona el apartado EJB. Allí debes encontrar el bean que acabas de desplegar.

Probar la aplicación cliente

Ahora la aplicación cliente debe funcionar correctamente. ¡Pruébala!:

cd $WORK/ejb/HelloWorld
% java HelloWorldClient
Voy a llamar al bean
Hola; soy Domingo
He llamado al bean

Desplegar el bean usando la consola de administración

Vamos a ver otra forma de desplegar el bean; ahora usando la consola de administración.

1. Vamos a volver al instante en que el fichero EJB JAR no estaba desplegado en el servidor de aplicaciones. Para ello elimina el bean desplegado usando la consola de administración. Debes pinchar en el cubo de basura que hay a la derecha del nombre del bean, en la pantalla moduloejb > EJB Deployments

Acepta en la pantalla de confirmación. Con ello el EJB se habrá eliminado del servidor de aplicaciones. Si ejecutas la aplicación cliente, verás que aparece el mismo error que la primera vez que lo hicimos.

2. En la consola de administración escoger la opción EJB y Configure a new EJB. Entrarás en la pantalla Locate Application or Component to Configure. En esta pantalla puedes subir un EJB JAR al servidor y después seleccionarlo para desplegarlo. Como el fichero EJB JAR ya está en el propio servidor (la máquina localhost) sólo debes seleccionarlo.

Selecciona ahora el servidor en el que quieres desplegar el bean (myserver), acepta el nombre por defecto de la aplicación y pulsa en Configure and Deploy:

3. Prueba la aplicación cliente. Te seguirá dando error. ¿Porqué?

4. Para cambiar el nombre JNDI desde la consola de administración, selecciona la opción de Edit Deployment Descriptor. Se abrirá una nueva ventana del navegador en la que podrás modificar los distintos aspectos de configuración del EJB. Despliega el árbol WebLogic EJB Jar, WebLogic Enterprise Beans y selecciona el objeto HelloWorld. Aparece una pantalla en la que podrás modificar el JNDI Name. Escribe HelloWorldEJB y Apply Changes:

Comenzará a parpadear el icono con la admiración. Eso significa que debes reiniciar el servidor. Pero primero debes grabar la nueva configuración del EJB: pulsa en el árbo helloworld-ejb.jar y cambiará la pantalla de la derecha. Pulsa la opción “Persist”, con lo que se estará grabando el fichero helloworld-ejb.jar modificado. Para no tener que personalizar más este fichero, puedes descomprimirlo con el comando:

% jar xvf helloworld-ejb.jar

Si ahora miras en el directorio META-INF verás que está el fichero weblogic-ejb-jar.xml. Este fichero es el que ha creado el WebLogic Builder y ha modificado la consola de administración. Si lo editas, verás que el elemento XML jndi-name tiene el valor HelloWorldEJB.

Reinicia el servidor y prueba la aplicación cliente. Ahora sí que debe funcionar.

Ejercicio 3: Modificar el código fuente del bean

Modifica el código fuente del bean para que en lugar de devolver el mensaje “Hola, soy Domingo”, devuelva tu nombre. Para ello:

Por último, modifica la aplicación cliente, para que en lugar de conectarse al bean de tu propio servidor de aplicaciones se conecte al de un compañero.