Antes de realizar el ejercicio, vamos a asegurarnos de que todo está configurado correctamente:
moduloejb
debe estar creado. Compruébalo mirando si existe
un directorio con ese nombre en el directorio bea/user_projects
.CLASSPATH
:
% export PATH=$PATH:/home/j2ee/bea/weblogic700/server/bin % . setWLSEnv.sh % export CLASSPATH=$CLASSPATH:.
ejercicio2.zip
)
en el directorio de trabajo /home/j2ee/ejb
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
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í:
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
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.
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.
ejb/HelloWorldEJB
se realiza en el fichero weblogic.xml
,
asociando un nombre JNDI concreto a esa dirección. weblogic-ejb-jar.xml
.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.