Master J2EE de Oracle: Paso 12 de 12: Despliegue - Donde el Borrador encuentra el Camino (y II)

Puede encontrar la versión original de este artículo en Inglés en:

http://www.oracle.com/technology/pub/articles/masterj2ee/index.html

Decargas necesarias para este artículo:

Desplegar Oracle ADF con Ant

Cuando despliegue una aplicación J2EE construida utilizando Oracle ADF con Ant, debe seguir estos pasos:

  1. Crear descriptores de despliegue para cada módulo.
  2. Crear descriptores de despliegue globales.
  3. Crear ficheros de construcción de Ant para cada módulo.
  4. Crear un fichero de construcción de Ant global.
  5. Desplegar la aplicación.
  6. Probar la aplicación.

Desplegar en OC4J

Paso 1: Crear Descriptores de Despliegue para cada Módulo

Sigua los pasos presentados en el artículo anterior para generar descriptores de despliegue para los tres proyectos: TopLinkModel, BusinessServices, y WebView.

Para el proyecto TopLinkModel genere el descriptor de despliegue toplink-deployment-descriptor.xml.

También debería ver dos descriptores de depliegue, más específicamente: ejb-jar.xml y orion-ejb-jar.xml. Estos ficheros debería haberlos generado Oracle JDeveloper10g cuando se creó el bean de sesión. De forma similar, si mira dentro del proyecto Web, encontrará que se ha generado un descriptor de despliegue web.xml (esto sucede tan pronto como añade una página JSP a su proyecto).

Paso 2: Crear Descriptores de Despliegue Globales

Cuando despliegue con Ant, necesitará acceder al descriptor de despliegue del archivo empresarial (*.ear). Cuando despliegua la aplicación utilizando perfiles de despliegue, Oracle JDeveloper10g automáticamente genera descriptores de despliegue para el archivo empresarial. Sin embargo esto no ocurre cuando despliega la aplicación con Ant. Usted debe crear application.xml, el documento que describe los módulos J2EE del archivo. Esto es así para las aplicaciones de dos y tres capas, excepto cuando despliega en Tomcat.

Aquí están los pasos que le ayudarán a crear el descriptor de despliegue del archivo empresarial application xml:

  • Pulse con el botón derecho sobre el proyecto de servicios de negocio y seleccione New...
  • Seleccione Deployment Descriptors en Categories
  • Seleccione application.xml en Items
  • Añada el módulo EJB editando el fichero xml (sólo para la aplicación de tres capas).
  • Añada el módulo web editando el fichero xml.
  • Grabe el fichero.

Aquí tiene un fichero de ejemplo:

<?xml version = '1.0' encoding = 'windows-1252'?>

<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">

<application>
  <display-name>AntEmpDeptApp</display-name>
  <module>
    <ejb>EmpDeptFacade.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>departments.war</web-uri>
      <context-root>departments</context-root>
    </web>
  </module>
</application>
			

Paso 3: Crear los Ficheros de Construcción Ant para cada Módulo

Oracle JDeveloper10g ofrece soporte interno para Ant. Lo primero es generar los ficheros de construcción para cada proyecto.

  • Pulse con el botón derecho sobre el proyecto BusinessServices y seleccione New...
  • Seleccione All technologies en Filter By.
  • Seleccione Ant en Categories.
  • Seleccione Buildfile generated from Active Project Profile en Items.

  • Pulse sobre OK.
  • Introduzca el nombre; por ejemplo business_build.xml.
  • Pulse sobre OK.

Esto generará un fichero de construcción con los siguientes targets: all, rebuild, clean, make, doc, compile, e init.

Repita este paso con los proyectos TopLinkModel y Webview.

Ahora ya estámos listos para añadir el código para ensamblar los ficheros jar. Use ficheros de construcción separados para el despliegue, porque querrá poder regenerar el fichero de construcción que compila el fichero de proyecto. Necesitará añadir el fichero con el asistente si quiere poder ejecutar el fichero Ant desde dentro de Oracle JDeveloper10g. Empezaremos con el fichero de construcción de despliegue para el módulo EJB. En la configuración de dos capas, se puede saltar este paso.

  • Pulse con el botón derecho sobre el proyecto BusinessServices y seleccione New...
  • Seleccione Ant.
  • Seleccione Empty build file.
  • Pulse sobre OK.
  • Introduzca un nombre, por ejemplo business_deploy.xml.
  • Pulse sobre OK.

Se generará un esqueleto de un fichero de construcción, con un target. init. Necesitará añadir el siguiente código al fichero xml:

  • Añada el código que construye el modelo y el proyecto de los servicios de negocio llamando a los ficheros de construcción generados anteriormente:
    <target name="rebuild">
      <ant antfile="model_build.xml" dir="${toplink.dir}" inheritRefs="true" target="rebuild"/>
      <ant antfile="business_build.xml" inheritRefs="true" target="rebuild"  />
    </target>
    					
  • Añada elcódigo que ensambla el fichero jar y grabe el fichero:
    <target name="Ejb" depends="rebuild">
     <jar jarfile="${deploy.dir}/${appname}.jar">
      <fileset dir="${business.compile.outdir}">
        <include name="buslogic/**"/>
        <include name="toplink/**"/>
        <include name="META-INF/orion-ejb-jar.xml"/>
        <include name="META-INF/ejb-jar.xml"/>
      </fileset>
      <fileset dir="${toplink.dir}/classes" >
        <include name="META-INF/**/*.xml"/>
        <include name="toplink/**" />
      </fileset>
     </jar>
    </target>
    					

Ahora que se ha construido el módulo EJB, creemos un fichero de construcción que ensamble el archivo web:

  • Pulse con el botón derecho sobre el proyecto BusinessServices y seleccione New...
  • Seleccione Ant.
  • Seleccione Empty build file.
  • Pulse sobre OK.
  • Introduzca un nombre, por ejemplo webview_deploy.xml.
  • Pulse sobre OK.
  • Añada código para ensamblar el fichero war:
    <!-- Assemble a war file this depends on compilation -->
    	<target name="assembleWar" depends="init, rebuild, addlibs">
    		<war destfile="${deploy_webview.dir}/${web.appname}.war" webxml="${webconfig.dir}/web.xml">
          <fileset dir="${html.dir}"
            includes="*.jsp, *.html"
            excludes="/*/** " />
          <lib dir="${webview.libdir}"/>
        <classes dir="${webbase.dir}/${compile.outdir}"/>
      </war>
    </target>
    					
  • Grabe el fichero.

Paso 4: Crear un Fichero de Construcción Global

Ahora estamos listos para crear un nuevo fichero de construcción vacío y añadirle código para esamblar el fichero ear y desplegar la aplicación en OC4J.

  • Cree un nuevo fichero de construcción vacío.
  • Añada targets para llamar a las tareas ensambleJar (sólo para tres capas) y assembleWar que se crearón en el paso 3.
  • Añada el código para desplegar en OC4J:
    <!-- deploy to local oc4j -->
    <target name="deploy_oc4j" depends="assembleEar"
         description="deploy the enterprise archive to a standalone oc4j">
      <java classname="${jdev.home}/j2ee/home/admin.jar" fork="true">
          <jvmarg value="-jar"/>
          <arg value="ormi://localhost/"/>
          <arg value="admin"/>
          <arg value="PWD"/>
          <arg value="-deploy"/>
          <arg value="-file"/>
          <arg value="${deploy.dir}/${appname}.ear"/>
          <arg value="-deploymentName"/>
          <arg value="${appname}"/>
    	 </java>
      <!-- now we need to bind the webapplication -->
      <java classname="${jdev.home}/j2ee/home/admin.jar" fork="true">
          <jvmarg value="-jar"/>
          <arg value="ormi://localhost/"/>
          <arg value="admin"/>
          <arg value="PWD"/>
          <arg value="-bindWebApp"/>
          <arg value="${appname}"/>
          <arg value="${webappname}"/>
          <arg value="http-web-site"/>
          <arg value="${contextroot}"/>
      </java>
    </target>
    					

Paso 5: Desplegar la Aplicación

El despligue se puede ejecutar desde dentro de JDeveloper10g, o desde la línea de comandos. Si elige desplegar desde dentro de Oracle JDeveloper10g, pulse con el botón derecho sobre el fichero de construcción de Ant y elija el target que quiere ejecutar.

Si quiere empezar el despliegue desde la línea de comandos, teclee lo siguiente:

ant -buildfile application_deploy.xml deploy_oc4j
			

El formato general para llamar al comando ant es el siguiente:

ant -buildfile [name of the buildfile] [target name]
			

Paso 6: Probar la Aplicación

Ahora que se ha desplegado la aplicación, podemos probarla.

Para la aplicación de tres capas, empezaremos probando el bean de sesión desplegado. Podemos hacer esto generando un cliente de prueba. Aségurese de tener una conexión con el servidor de aplicaciones OC4J antes de generar el cliente Java.

  • Pulse con el botón derecho sobre la clase bean del proyecto de servicios de negocio.
  • Seleccione New Sample Java Client...
  • Seleccione Connect to Remote App Server.
  • Teclee el nombre de la aplicación empresarial:

  • Seleccione la conexión con OC4J.
  • Pulse sobre OK.
  • Añada el siguiente código al método main justo antes de la sentencia catch:
    Collection emps = empDeptFacade.getEmployees(  );
    System.out.println("number of emps: "+ emps.size());
    Collection depts = empDeptFacade.getDepartments(  );
    System.out.println("number of departments: "+ depts.size());
    					
  • Añada una sentencia import java.util.Collection.
  • Pulse con el botón derecho sobre el cliente Java recien generado y seleccione Run.

Debería ver la siguiente salida (los números podrían ser diferentes):

Ahora probemos el cliente:

  • Abra un navegador.
  • Teclee la URL: http://localhost:8888/departments/departments.jsp

Si desplegó la aplicación en otra máquina, introduzca su nombre en la URL. Si utilizó un contexto raíz diferente, cambie el nombre del contexto en la URL.

El formato general es: http://[hostname]:[port]/[context-root]/[jspname].jsp

Si el despliegue se realizó con éxito, verá una página con una lista de los primeros diez departamentos.

Si obtiene una excepción class not found, podría necesitar añadir una librería a su servidor de aplicaciones o a la aplicación web. En el ejemplo se añadieron las siguientes librerías al directorio WEB-INF/lib:

  • ${jdev.home}/adfc/lib/adf-controller.jar
  • ${jdev.home}/BC4J/jlib/adfmejb.jar
  • ${jdev.home}/jakarta-commons-el/commons-el.jar
  • ${jdev.home}/jakarta-commons-el/jsp-el-api.jar
  • ${jdev.home}/jakarta-commons-el/oracle-el.jar

Desplegar en otros Servidores

Desplegar la aplicación en otros servidores de aplicaciones con Ant es similar al despliegue realizado para OC4J. En general sólo se necesitan tres tipos de cambios:

  • Algunos servidores de aplicaciones necesitan librerías extras para ejecutar la aplicación web con ADF.
  • El target de despliegue es diferente para cada tipo de servidor.
  • Se añaden descriptores de despliegue específicos del vendedor.

BEA Weblogic 8.x

  • Librería extra: =${jdev.home}/jakarta-taglibs/jstl-1.0/lib/jstl.jar
  • Target de despliegue:
    <!-- deploy to bea weblogic 8 -->
    <target name="deploy_bea" depends="assembleEar"
      description="deploy the enterprise archive to a bea weblogic">
        <java classname="weblogic.Deployer" fork="true">
         <classpath>
            <pathelement location="${weblogic.home}/weblogic.jar"/>
            <pathelement path="${weblogic.home}"/>
         </classpath>
         <arg value="-adminurl"/>
         <arg value="http://localhost:7001/"/>
         <arg value="-user"/>
         <arg value="weblogic"/>
         <arg value="-password"/>
         <arg value="weblogic"/>
         <arg value="-debug"/>
         <arg value="-verbose"/>
         <arg value="-activate"/>
         <arg value="-upload"/>
         <arg value="-source"/>
         <arg value="${deploy.dir}/${appname}.ear"/>
         <arg value="-name"/>
         <arg value="${appname}"/>
        </java>
    </target>
    				
  • Descriptor específico del vendedor: weblogic-ejb-jar.xml

JBoss 3.2.x

  • Librería extra: ninguna.
  • Target de despliegue: ninguno, puede copiar el fichero *.ear al directorio de despliegue:
    <!-- deploy to jboss or tomcat -->
    <target name="deploy_jboss" depends="assembleEar"
      description="deploy the enterprise archive to jboss or tomcat">
      <copy file="${deploy.dir}/${appname}.ear" todir="${serverdeploy.dir}"/>
    </target>
    				
  • Descriptor específico del vendedor: jboss.xml

Tomcat 5.x

  • Librería extra: ninguna.
  • El target de despliegue es el mismo que para JBoss, sólo copiar el fichero al servidor.
  • Descriptor específico del vendedor: ninguno.

Sumario

Este artículo ha mostrado como desplegar una aplicación J2EE en diferentes servidores de aplicaciones utilizando Ant y el IDE de Oracle JDeveloper10g. En mi experiencia he encontrado que desplegar con Ant es más rápido y fiable. Los desarrolladores tienen acceso a esta herramienta de construcción tan madura desde dentro de Oracle JDeveloper 10g o desde fuera del IDE. En este artículo sólo hemos mostrado una pequeña parte de las posibilidades que ofrece Ant.

Los perfiles de despliegue son una buena elección para desarrolladores individuales que despliegan en un único entorno. Ant es la mejor opción para desplegar grandes proyectos donde suelen aparecer los complejos problemas de control de la configuración. Tanto si usted es un fanático de la línea de comandos, como si le gustan los IDEs, Oracle JDeveloper10g le ofrece la opción de elegir lo que mejor funciona en lo que respecta al despliegue de aplicaciones J2EE.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP