En los ejercicios de esta primera sesión vamos a:
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
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.
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.
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.
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:
Pasos previos:
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:.
|
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)
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%)
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.
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
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.
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.