Ejercicios sesión 2

Ejercicio 1: Compilación, despliegue y prueba de una aplicación web que usa un bean de sesión sin estado

Pasos previos

Antes de realizar el ejercicio, vamos a asegurarnos de que todo está configurado correctamente:

Compilación y creación del fichero JAR con el bean

Al descomprimir el fichero ZIP debes tener la siguiente estructura de ficheros:

HelloWorldWeb/jsp/CommonFunctions.jsp
HelloWorldWeb/jsp/HelloWorld.jsp

HelloWorldWeb/src/HelloWorldServlet.java
HelloWorldWeb/src/HelloWorldSLBean/HelloWorld.java 
HelloWorldWeb/src/HelloWorldSLBean/HelloWorldBean.java 
HelloWorldWeb/src/HelloWorldSLBean/HelloWorldHome.java 

HelloWorldWeb/xml/application.xml
HelloWorldWeb/xml/ejb-jar.xml 
HelloWorldWeb/xml/web.xml
HelloWorldWeb/xml/weblogic-application.xml
HelloWorldWeb/xml/weblogic-ejb-jar.xml 
HelloWorldWeb/xml/weblogic.xml 

1. Compila los ficheros del bean:

% cd HelloWorldWeb/src
% javac HelloWorldSLBean/*.java

2. Crea el fichero EJB JAR

% cd ..
% mkdir jar-ejb
% cd jar-ejb
% mkdir META-INF
% cp ../xml/ejb-jar.xml META-INF
% cp ../xml/weblogic-ejb-jar.xml META-INF
% mkdir HelloWorldSLBean
% cp ../src/HelloWorldSLBean/*.class HelloWorldSLBean 
% jar cvf helloworld-ejb.jar *
manifest agregado
agregando: META-INF/ejb-jar.xml
agregando: META-INF/weblogic-ejb-jar.xml
agregando: HelloWorldSLBean/HelloWorld.class
agregando: HelloWorldSLBean/HelloWorldBean.class
agregando: HelloWorldSLBean/HelloWorldHome.class

3. Compila el servlet

% cd ../src
% javac HelloWorldServlet.java

4. Crea el fichero WAR JAR con la aplicación web

% cd ..
% mkdir jar-war
% cd jar-war
% mkdir WEB-INF
% cp ../xml/web.xml WEB-INF
% cp ../xml/weblogic.xml WEB-INF
% cp ../jsp/* .
% mkdir WEB-INF/classes
% mkdir WEB-INF/classes/HelloWorldSLBean
% cp ../src/HelloWorldSLBean/HelloWorld.class WEB-INF/classes/HelloWorldSLBean/
% cp ../src/HelloWorldSLBean/HelloWorldHome.class WEB-INF/classes/HelloWorldSLBean/
% cp ../src/HelloWorldServlet.class WEB-INF/classes
% jar cvf helloworld.war *
manifest agregado
agregando: CommonFunctions.jsp
agregando: HelloWorld.jsp
agregando: WEB-INF/
agregando: WEB-INF/classes/
agregando: WEB-INF/classes/HelloWorldServlet.class
agregando: WEB-INF/classes/HelloWorldSLBean/
agregando: WEB-INF/classes/HelloWorldSLBean/HelloWorld.class
agregando: WEB-INF/classes/HelloWorldSLBean/HelloWorldHome.class
agregando: WEB-INF/web.xml
agregando: WEB-INF/weblogic.xml

5. Por último, vamos a crear el fichero JAR con la aplicación (fichero EAR):

% cd ..
% mkdir jar-ear
% cd jar-ear
% mkdir META-INF
% cp ../xml/application.xml META-INF
% cp ../xml/weblogic-application.xml META-INF
% cp ../jar-ejb/helloworld-ejb.jar .
% cp ../jar-war/helloworld.war .
% jar cvf helloworld.ear *
manifest agregado
agregando: META-INF/
agregando: META-INF/application.xml
agregando: META-INF/weblogic-application.xml
agregando: helloworld-ejb.jar
agregando: helloworld.war

Desplegar la aplicación

1. Arranca el servidor de aplicaciones instalado en el ejercicio 1 de la sesión anterior

2. Usando la consola de administración, elimina el EJB HelloWorld existente (si es que hubiera alguno).

3. Despliega la aplicación. Importante: hazlo sin subir el fichero al servidor de aplicaciones, porque ya lo tienes allí:

Probar la aplicación

1. Prueba el servlet y la página JSP

http://localhost:7001/HelloWorld/HolaMundo
http://localhost:7001/HelloWorld/HolaMundo.jsp

2. Compila el cliente y pruébalo.

% cd src
% javac HelloWorldClient.java
% java HelloWorldClient

Ejercicio 2: cambiar algunos descriptores del despliegue

URLs de la aplicación

1. Las URL públicas de la aplicación se encuentran definidas en los elementos url-pattern del fichero de despliegue de la aplicación web (web.xml). El directorio raíz de la aplicación se encuentra definido en el elemento context-root del fichero de descripción del despliegue application.xml.

2. Cambia el nombre de estos elementos para que el acceso al servlet y a la página JSP se a las siguientes direcciones

http://localhost:7001/hw/hw
http://localhost:7001/hw/hw.jsp

3. Reconstruye los ficheros helloworld.war y helloworld.ear y redespliega la aplicación. Pruébala para asegurarte que funciona correctamente.

Referencias a beans en la aplicación web

1. En la aplicación web se accede al bean HelloWorld de forma indirecta, usando la dirección java:comp/env/ejb/HelloWorldEJB del espacio local de nombres JNDI ENC. Esto permite definir de forma declarativa el enlace entre la aplicación y el bean hasta el momento del despliegue y cambiar el mismo sin tener que recompilar el EJB.

2. Cambia el nombre JNDI del bean y llámalo HW, ahora usando la consola de administración (seleccionando el bean HelloWorld y pulsando en la opción Edit EJB Descriptor). En el árbol con los elementos XML de la ventana del navegador que se acaba de abrir despliega la opción WebLogic EJB JAR y luego Weblogic Enterprise Beans. Pincha en el bean y cambia su nombre JNDI. Pincha en el padre de todo el árbol de elementos XML (con el nombre helloworld-ejb.jar) y pulsa la opción Persist. De esta forma se habrá guardado en el fichero de descripción del despliegue el nuevo nombre JNDI del bean. Puedes cerrar la ventana del navegador.

3. Redespliega la aplicación. En la ventana principal de la consola de administración pulsa la opción Applications y selecciona la aplicación HelloWorld. Pulsa la opción Deploy Application para volver a desplegar la aplicación.

4. Prueba ahora cualquiera de las URLs y verás que aparece un error.

5. Modifica el código fuente de la aplicación cliente para que se conecte al bean con el nuevo nombre JNDI. Recompila y comprueba que ahora sí funciona.

6. Modifica el nombre JNDI de la referencia ejb/HelloWorldEJB usando también la consola de administración. Graba el cambio con la opción Persist y redespliega la aplicación. Prueba ahora las URLs.