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

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:

Introducción

¿Qué hace que el despliegue sea tan complejo? Veamos una típica aplicación empresarial. Invariablemente, las aplicaciones empresariales tienen tres capas diferentes: presentación, servicios de negocio y capa de persistencia. Cada capa puede ser empaquetada como un módulo J2EE independiente, destinado para uno o más ejemplares de un contenedor final; cada uno de los cuales puede estar localizado en un único servidor de apliaciones (vea la Figura 1) o entre varios servidores (por ejemplo, para balance de carga).


Figura 1: Arquitectura de J2EE.

Además de la complejidad inherente que acompaña al despliegue en contenedores J2EE, si la aplicación ha sido creada utilizando uno de los muchos marcos de trabajo del mercado, también debe tenerse en cuenta ese marco de trabajo durante el despliegue. Muchos desarrolladores de aplicaciones J2EE tratan con marcos de trabajo, como Oracle Application Development Framework (ADF), debido a los beneficios obtenidos durante el desarrollo. En el momento del despliegue, también se debe desplegar en el servidor de aplicaciones las librerías de tiempo de ejecución de un marco dado, y los ficheros específicos del marco de trabajo también se deben desplegar junto con la aplicación. (Los vendedores de marcos de trabajo, incluyendo Oracle, normalmente proporcionan herramientas adicionales para facilitar el proceso de despliegue.

Verá como automatizar el proceso a lo largo de este artículo, utilizando perfiles de despliegue basados en asistentes y utilizando una alternativa de la línea de comandos. Este artículo pretende simplificar el proceso de despliegue, proporcionando ejemplos detallados que repasan paso a paso el despliegue. La elección entre el uso de una aproximación basada en asistente o en la línea de comandos es muy personal (también podría estar dictada por estándares coorporativos). Sin embargo, en cualquier caso, el IDE ofrece características para hacer el proceso más sencillo. Empecemos con una breve introducción al proceso de despliegue.

El proceso de Despliegue

Préviamente al despliegue real, las aplicaciones J2EE se entregan en un formato de archivo empresarial (*.ear, un fichero Java comprimido). Consta de uno o más módulos J2EE y descriptores de despliegue. Un descriptor de despliegue es un fichero XML que proporciona información al contenedor J2EE sobre las condiciones de despliegue de la aplicación o módulo.

Entre los descriptores de despliegue se incluyen los descriptores de despliegue genérico de J2EE, como ejb-jar.xml, y descriptores específicos del vendedor, como orion-ejb-jar.xml o weblogic-ejb-jar.xml, que configuran las características específicas de cada contenedor J2EE. Un módulo J2EE consiste en uno o más componentes J2EE para el mismo tipo de contenedor con un descriptor de despliegue para ese tipo. En este artículo, se explican un módulo EJB y un módulo web. Un módulo EJB consta de uno o más EJB's (de sesión o de entidad) y otros ficheros de clases. El descriptor de despligue genérico es ejb-jar.xml. El módulo se empaqueta en un fichero *.jar. Un módulo web puede contener servlets, .jsp, .html y clases java y se empaqueta como un fichero *.war. El descriptor de despligue genérico es web.xml.

Existen cuatro formas diferentes de desplegar aplicaciones J2EE construidas utilizando marcos de trabajo como Oracle ADF:

Despliegue en Caliente

Una aproximación que básicamente construye en el servidor el directorio, los ficheros de clases, y otras estructuras que podrían ser descomprimidas desde un fichero *.ear. En vez de pre-empaquetar la aplicación y luego desplegarla en el servidor, el código de la aplicación se compila directamente en el servidor, en los directorios y subdirectorios apropiados. El problema de esta aproximación es que los cambios en los descriptores u otros elementos declarativos podrían no actualizarse dinámicamente en el servidor, y podrían requerir un reinicio de éste.

Perfiles de Despligue

Una aproximación basada en un asistente (wizard), dirigida por el IDE o una herramienta de despliegue, que resulta en un fichero que contiene toda la información necesaria para construir y desplegar un componente en un entorno partícular. Por ejemplo, Oracle JDeveloper 10g genera ficheros *.deploy, básandose en la configuración del proyecto activo, que contiene toda la información necesaria para construir y desplegar un componente desde JDeveloper 10g a un servidor designado (Oracle Application Server, BEA WebLogic, standalone Oracle Application Server Containers for J2EE 10g, Tomcat, o JBoss). Se pueden combinar diferentes perfiles de despliegue en un único perfil de despliegue. Uno de los artefactos generados por un perfil de despliegue son los descriptores de despliegue para cada uno de los elementos de la aplicación.

Apache Ant

Una aproximación programática utilizando la herramienta basada en Java Ant para construir y desplegar aplicaciones J2EE. Esta aproximación tiene muchas ventajas, como una abundante documentación y experiencia, una amplia adopción de la herramienta, y la relativa facilidad con la que los desarrolladores pueden configurar esta herramienta para ayudarles a automatizar el ciclo de construcción y despliegue. Además, como Ant, está escrito en Java, los desarrooladores pueden extender sus funcionalidades escribiendo sus propias tareas. Ant tiene soporte interno para CVS, JUnit, y otras tareas para que usted pueda automatizar tanto la construcción y el despliegue como el proceso de pruebas de código. Oracle JDeveloper10g hace fácil el despliegue utilizando Ant proporcionando soporte para la creación y ejecución de tareas de Ant.

Control de Despliegue basado en la Consola

Una aproximación orientada al servidor que trata con herramientas administrativas. La mayoría de los servidores de aplicaciones J2EE tienen una consola de control u otro tipo de interface de usuario para desplegar ficheros *.war o *.ear. Oracle, por ejemplo, soporta la utilización de una consola basada en web para manejar el despliegue de aplicaciones J2EE en Oracle Application Server; BEA WebLogic también tiene su propia consola de control.

Cada una de esas aproximaciones tiene sus pros y sus contras. En este artículo, nos enfocaremos en el despliegue de aplicaciones Oracle ADF utilizando los perfiles de despliegue de Oracle JDeveloper10g, y luego utilizando Ant (en la Parte 2). No se verá el despliegue en caliente ni el despliegue desde consolas de servidores de aplicaciones.

El proceso de desarrollo, testeo y despliegue (como se muestra en la Figura 2), sitúa diferentes requerimientos en cada uno de los distintos entornos (vea la Tabla 1) en los que ocurre el proceso global:


Figura 2: entornos J2EE.

La siguiente tabla sumariza los diferentes entornos mostrados en la Figura 2 (desarrollo, integración/desarrollo, test y producción) e ilustra la características de cada entorno y el tipo de requerimientos que tiene cada uno para el despliegue, anotando los pros y contras de los perfiles de despliegue y Ant.

Entorno Características Requerimientos de Despliegue Perfiles de Despliegue vs. Ant
Desarrollo Cada desarrollador tiene una estación de trabajo con Oracle JDeveloper10g, un OC4J independiente y otro servidor J2EE de peso ligero, un cliente de control de versiones (por ejemplo CVS) y una conexión a un esquema de base de datos. El desarrollador crea y despliega componentes y ejecuta tests sin mezclarlos con los de otros desarrolladores o probadores. El despliegue debe ser simple, rápido y capaz de soportar el despliegue selectivo (sólo ciertos elementos de la aplicación), idealmente, desde dentro del IDE que está utilizando el desarrollador. Los perfiles de despligue son muy útiles porque cada desarrollador partícular los puede crear fácilmente para un despliegue rápido.
Integración/Desarrollo Los componentes se integran y despliegan en Oracle Application Server u otro servidor compatible J2EE. Los tests de integración se ejecutan con un test de cliente y un esquema de base de datos dedicado. Los tests de unidades se ejecutan automáticamente en este entorno. El código de los diferentes desarrolladores se integra dentro de una o más aplicaciones empresariales. El integrador maneja el proceso de despliegue, que comprende varios pasos predefinidos entre los que se incluyen: chequeo, construcción, despliegue, tests. Estos pasos (que pueden tardar cualquier tiempo, desde varios minutos a varias horas) se deben ejecutar en la misma secuencia. Ant, es la mejor opción para este tipo de procesos de despliegue (chequeo, construcción, despliegue, test).
Test Los componentes se despliegan en un Oracle Application Server u otro servidor compatible con J2EE. Los tests de sistema (que normalmente se hacen manualmente) se ejecutan desde uno o más PCs utilizando un esquema de prueba por cada testeador. Muy similar al entorno de integración y desarrollo. Ya que los tests de unidades ya se habrán terminado, el proceso de despliegue es relativamente corto. Ant es la mejor opción ya que se deben ejecutar muchos pasos en un orden específico.
Producción Uno o más contenedores compatibles con J2EE (como Oracle Application Server), uno o más clientes, y una o más bases de datos de producción. Estrictos requerimientos de seguridad, escalabilidad, eficiencia, y otros requerimientos de cualquier aplicación empresarial. Configurado para un óptimo rendimiento. Capaz de ser desplegada en varios ejemplares, se deberá configurar el balance de carga y otras selecciones. Por esas razones, los administradores de sistemas prefieren desplegar la aplicación con la consola de control del propio servidor de aplicaciones. Se pueden utilizar de forma efectiva tanto Ant como los perfiles de despliegue para ensamblar el fichero *.ear. Luego se puede utilizar la consola de control del servidor de aplicaciones para desplegar el fichero recien creado.

Ahora que tenemos un buen conocimiento del proceso de despliegue y hemos identificado algunos de los requerimientos de los diferentes entornos, veamos el proceso de despliegue de una aplicación Oracle ADF de ejemplo en distintos tipos de servidores J2EE, empezando con Oracle Application Server Containers for J2EE (OC4J) 10g.

Desplegar utilizando Perfiles de Despliegue

Para demostrar el despliegue de aplicaciones J2EE utilizando perfiles de despliegue, este artículo se enfoca en los siguientes servidores de aplicaciones:

  • Standalone OC4J 10g
  • BEA WebLogic 8.x
  • Apache Tomcat 5.x
  • JBoss 3.2.x

Notas de Instalación para OC4J y Enterprise Manager (links de referencia)

Las aplicaciones empresariales se pueden desplegar en dos configuraciones alternativas: utilizando componentes EJB, como beans de sesión para servicios de la lógica de negocio; o sin componentes EJB, utilizando objetos normales Java (POJOs) en conjunción con un cliente Web. Según vaya pasando por el proceso con el código de ejemplo, verá donde se diferencian los procesos de las dos arquitecturas.

Cuando despliegue una aplicación Oracle ADF usando perfiles de despliegue, usted debe:

  • Paso 1: Instalar las librerías de ejecución de ADF, si es necesario.
  • Paso 2: Crear una conexión al servidor de aplicaciones. Esta conexión se utiliza para desplegar la aplicación.
  • Paso 3: Crear descriptores de despliegue para cada módulo.
  • Paso 4: Crear perfiles de despliegue para cada módulo (módulo EJB y módulo Web)
  • Paso 5: Crear un perfil de despliegue global para la aplicación empresarial.
  • Paso 6: Desplegar la aplicación.
  • Paso 7: Probar la aplicación.

Las librerías de ejecución se pueden desplegar con la aplicación o se pueden instalar en el servidor de aplicaciones. Si las instala en el servidor, otras apliaciones ADF podrán utilizarlas.

Cuando genere perfiles de despliegue con Oracle JDeveloper10g, se asume que las librerías ya están instaladas en el servidor. Sin embargo, si quiere que la aplicación tenga su propia copia privada del marco de trabajo, debe añadir las librerías de ADF como librerías al fichero *.ear.

Estos mismo pasos básicos se aplican a todos los servidores de aplicaciones J2EE.

Desplegar en OC4J

Desplegar en OC4J es especialmente fácil desde Oracle JDeveloper, y todos los ficheros auxiliares también pueden instalarse fácilmente desde Oracle JDeveloper. Dependiendo de su entorno, podría no necesitar seguir todos los pasos siguientes. Por ejemplo, si ya tiene instaladas en OC4J las librerías de ejecución de ADF, podría saltarse el primer paso. Las instrucciones empiezan desde Oracle JDeveloper, y asumen que usted ya ha configurado el proyecto de ejemplo.

Paso 1: Instalar las Librerías de Ejecución de ADF

Si las librerías de ejecución de ADF no están instaladas en el servidor OC4J, o si quiere instalar una nueva versión:

  • Seleccione ADF Runtime Installer en el menú tools.

  • Seleccione Standalone OC4J.
  • Seleccione Next en la página de bienvenida.
  • Introduzca el directorio raíz de OC4J y seleccione Next.
  • Seleccione Install a new version of the ADF Runtime.
  • Pulse Next y Finish.

Después de que la instalación termine satisfactoriamente, deberá reiniciar OC4J.

Paso 2: Crear una Conexión con el Servidor de Aplicaciones

Para desplegar en OC4J utilizando perfiles de despliegue, debe crear una conexión con el servidor. Cuando configure OC4J, aségurese de que ha concecido privielegios de "administrative" al usuario que planea utilizar con las propiedades de conexión.

Seleccione la pestaña Connections en el navegador.

  • Haga doble click en Application server.
  • Introduzca el nombre de la conexión ('oc4j') y seleccione el tipo Standalone OC4J.
  • Pulse Next.
  • Introduzca el nombre de usuario y la password del adminstrador de OC4J y seleccione el checkbox deploy password.
  • Pulse Next.
  • Chequee la URL, y pulse Next.
  • Pruebe la conexión pulsando sobre el botón Test connection.
  • Si el resultado es Success pulse sobre Next.
  • Pulse Finish.

Ahora ya podrá navegar por el árbor JNDI en el panel de conexiones, expandiendo el árbol.

Paso 3: Crear los Descriptores de Depliegue

Por cada capa de la aplicación (presentación, servicios de negocio, y persistencia) debe crear los descriptores de despliegue apropiados. Empecemos con el proyecto Oracle TopLink.

  • Pulse con el botón derecho sobre el objeto TopLink Mapping en el proyecto Toplink.

  • Seleccione Generate toplink-deployment-descriptor.xml

Oracle JDeveloper genera un fichero XML que contiene informacón sobre el nombre del proyecto, el login a la base de datos, y los descriptores para los mapeos de objetos Java a las tablas de la base de datos.

Debería poder acceder a los descriptores de despliegue (ejb-jar.xml y orion-ejb-jar.xml) del bean de sesión EJB ya que estos los crea automáticamente Oracle JDeveloper 10g en el momento de la creación del EJB. Además también debería tener disponibles los descriptores de despliegue de su capa de presentación (web.xml). Al añadir JSPs (JavaServer Pages) a su proyecto web, Oracle JDeveloper 10g genera automáticamente los descriptores apropiados.

Paso 4: Crear Perfiles de Despliegue para cada Capa

Oracle JDeveloper10g escanea las propiedades del proyecto para determinar los ficheros y librerías que necesita empaquetar en el módulo J2EE. Tenga cuidado de las dependencias entre los distintos proyectos del workspace, de esta forma:

  • Para el proyecto de tres capas, el proyecto BusinessServices depende del proyecto TopLinkModel
  • Para el proyecto de dos capas, el proyecto WebView depende de los proyectos TopLinkModel y BusinessServices.

Como desplegamos los objetos de TopLink con el proyecto de servicios de negocio (tres capas) o el proyecto web (dos capas) no necesitamos generar un perfil de despliegue para esos objetos.

Para la configuración de tres capas, empezaremos generando un perfil de despliegue para la capa de servicios de negocio:

  • Pulse con el botón derecho sobre el proyecto de servicios de negocio y seleccione New.

  • Seleccione Deployment Profiles en Categories.
  • Seleccione EJB JAR File en Items.
  • Pulse OK.

  • Seleccione Filters bajo Project output.
  • Asegurese de que las clases de TopLink de la capa de persistencia están en esta pestaña:

  • Seleccione Platform y seleccione la conexión hacia OC4J que creó en el paso 2.

  • Pulse OK.

Ahora podemos generar el perfil de despliegue para el cliente web. Oracle JDeveloper10g genera un perfil de despliegue para el proyecto web cuando se crea, por eso sólo necesita editarlo.

  • Haga doble click en el fichero webapp.deploy en la pestaña Resources del proyecto web.
  • Cambie el nombre del fichero war a departments.war

Si está desplegando la aplicación de dos capas, chequee que las clases de TopLink y las clases de los servicos de negocio en las pestañas File groups, WEB-INF/classes y Filters están seleccionadas. Si no ve estas clases debe asegurarse de que ha seleccionado correctamente las dependencias del proyecto y que lo ha compilado.

  • Seleccione la plataforma e introduza la conexión al servidor de aplicaciones que creó anteriormente.

Paso 5: Crear un Perfil de Despliegue Golbal (sólo tres capas).

Si va a desplegar la aplicación de dos capas, puede utilizar el perfil de despliegue del proyecto web para desplegar el archivo. Si quiere desplegar la aplicación de tres caas, necesita un perfil de despliegue global que ensamble los dos módulos en un archivo.

  • Pulse con el botón derecho sobre el proyecto BusinessServices y seleccione New...
  • Seleccione Deployment Profiles en Categories.
  • Seleccione EAR file en Items.
  • Introduzca el nombre del perfil de despliegue y pulse OK para iniciar el editor.
  • En General, edite el nombre de la aplicación:

  • Seleccione Application assembly.
  • Marque los perfiles de despliegue que ha creado para los módulos EJB y WAR:

  • Seleccione Platform.
  • Seleccione la conexión a OC4J que creó en el paso 2.
  • Pulse OK.

Paso 6: Desplegar la Aplicación.

Ahora ya estámos listos para desplegar la aplicación en OC4J. Primero veamos los aspectos de despliegue de la aplicación de tres capas.

  • Pulse con el botón derecho sobre el perfil de despliegue global.
  • Seleccione Deploy to oc4j (esto debería ser el nombre de la conexión al servidor de aplicaciones que creó en el Paso 2).

El despliegue empezará. El progreso se puede monitorizar tanto en el panel de mensajes de JDeveloper10g como en la vantana de comandos de OC4J. JDeveloper10g primero genera el fichero *.ear, y luego lo despliega en el OC4J.

El fichero *.ear se guardará en el directorio deploy del proyecto para que pueda reutilizarlo.

  • application.xml (el descpriptor de aplicación J2EE estándar que lista el módulo EJB y el módulo Web de este 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>OracleEmpDeptApp</display-name>
      <module>
        <ejb>deptfacade.jar</ejb>
      </module>
      <module>
        <web>
          <web-uri>departments.war</web-uri>
          <context-root>oraclesample</context-root>
        </web>
      </module>
    </application>
    					
  • orion-application.xml; el descriptor específico de OC4J que describe la localización del fichero datasources.xml, en el que Oracle JDeveloper 10g almacena todas las conexiones. (Cuando utiliza TopLink, la información sobre la conexión a la base de datos se almacena en toplink-deployment-descriptor.xml, por eso no necesitará datasources.xml).

Paso 7: Probar la Aplicación Desplegada

En la aplicación de tres capas, queremos probar el despliegue del bean de sesión. Oracle JDeveloper10g puede generar un sencillo cliente Java para probar el bean.

  • Pulse con el botón derecho sobre el EmpDeptFacadeBean en el proyecto de servicios de negocio:

  • Seleccione New Sample Java Client...

  • Seleccione Connect to Remote App Server.
  • Seleccione el nombre de la aplicación J2EE que ha introducido en el perfil de despliegue global.
  • Seleccione el nombre del servidor de aplicaciones.
  • Pulse OK
  • Abra el fichero Java generado.
  • Añada una sentencia import java.util.Collection
  • 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());
    					
  • Pulse con el botón derecho sobre el cliente Java generado y seleccione Run.
    Debería ver la siguiente salida (los números podrían diferir):

  • Ahora pruebe el cliente:

  • Abra un navegador.
  • Tecle la URL: http://localhost:8888/oraclesample/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.

Desplegar en BEA WebLogic

Oracle JDeveloper10g soporta completamente el despliegue en BEA WebLogic utilizando perfiles de despliegue. El proceso es similar al despliegue de la aplicación ADF en OC4J.

Sin embargo, deberá tener en cuenta algunos pasos prelimimares antes de poder empezar, como la copia de las librerías de BEA WebLogic (weblogic.jar) al subdirectorio apropiado de su ordenador (para poder probar la conexión), y añadir el mismo fichero a una librería del proyecto en JDeveloper, entonces podrá probar el bean de sesión.

Configuración Preliminar

Antes de lanzar Oracle JDeveloper 10g:

  • Copie el fichero weblogic.jar al directorio <jdev_home>jdevlibext

Ahora ya puede lanzar JDeveloper. Después de tener en marcha a JDeveloper puede añadir weblogic.jar como una librería del proyecto:

  • Pulse con el botón derecho sobre el proyecto de servicios de negocio y seleccione Project properties.
  • Selecccione Libraries.

  • Seleccione New...
  • Teclee el nombre de la librería ("weblogic" por ejemplo).
  • Seleccione Edit para introducir el classpath.

  • Seleccione Add.
  • Navegue hasta donde se encuentra el fichero weblogic.jar.
  • Pulse OK.
  • Mueva la librería a Selected libraries.

Puede serguir estos pasos para añadir el fichero jbossall-client.jar como una librería del proyecto (si planea crear una aplicación cliente para beans EJB desplegados en JBoss, como se detalla un poco más adelante.

Paso 1: Instalar las Librerías de Ejecución de ADF.

Ejcute el instalador de ADF como se describe en la sección anterior.

Modifique el fichero de arranque ([BEA_HOME]user_projectsdomains[MYDOMAIN]startWebLogic.cmd) para que invoque al fichero setupadf.cmd como se ve en este ejemplo:

--snippet-------
@REM Initialize the common environment.
set WL_HOME=C:eaweblogic81
for %%i in ("%WL_HOME%") do set WL_HOME=%%~fsi
set PRODUCTION_MODE=
set JAVA_VENDOR=BEA
set JAVA_HOME=C:eajrockit81sp3_142_04
for %%i in ("%JAVA_HOME%") do set JAVA_HOME=%%~fsi
@REM Call commEnv here AFTER setting the java_vendor to get common environmental settings.
call "%WL_HOME%commonincommEnv.cmd"
@REM Set SERVER_NAME to the name of the server you wish to start up.
set SERVER_NAME=myserver
@REM Call setupadf here to set the ADF classes on the classpath
call setupadf
set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%jrelib
t.jar;%WL_HOME%serverlibwebservices.jar;%CLASSPATH%
----end of snippet-----
			

Arranque el servidor.

Paso 2: Crear una Conexión al Servidor de Aplicaciones

Los pasos son los mismos que para la conexión OC4J.

Paso 3: Crear los Descriptores de Despliegue

Para la configuración de dos capas, no se necesitan descriptores de despliegue extras. Genere el descriptor de despliegue de TopLink como se explicó anteriormente.

Sin embargo, si despliega la aplicación de tres capas, necesita crear weblogic-ejb-jar.xml:

  • Pulse con el botón derecho sobre el proyecto de servicios de negocio, y seleccione New....
  • Seleccione Deployment Descriptors en Categories.
  • Seleccione weblogic-ejb-jar.xml en Items.
  • Pulse OK.

Paso 4: Crear los Perfiles de Despliegue para cada Capa

Crear los perfiles de despliegue para BEA WebLogic es casi igual que hacerlo para OC4J. Aquí puede ver algunas de las diferencias:

  • En vez de orion-ejb-jar.xml debería incluir weblogic-ejb-jar.xml:

  • En lugar de seleccionar la conexión a OC4J, se debe seleccionar la conexión a BEA:

Paso 5: Crear un Perfil de Despliegue Global (sólo para la de tres capas.)

No hay cambios en este paso. Siga las directrices entregadas para OC4J. Recuerde dejar de lado el fichero orion-application.xml.

Paso 6: Desplegar la aplicación

No hay cambios en este paso. Sigua los pasos vistos en el despliegue de la aplicación para OC4J:

Paso 7: Probar la Aplicación

Probar la aplicación es igual que para OC4J, asumiendo que ha añadido el fichero weblogic.jar como una librería la proyecto BusinessServices.

Probar el cliente web es similar a lo explicado para OC4J. La principal diferencia es el número de puerto (aségurese de que el puerto por defecto de WebLogic es el 7001).

Desplegar en Jakarta-Tomcat de Apache

Como Tomcat no tiene un contenedor EJB, sólo puede desplegar la versión de dos capas de la aplicación de ejemplo.

Paso 1: Instalar las Librerías de Ejecución de ADF

Esto es similar a la instalación de las librerías en OC4J. Aségurese de que el servidor está apagado cuando ejecute el instalador.

Paso 2: Crear una Conexión al Servidor de Aplicaciones.

Cree la conexión según se ha descrito en las secciones anteriores. No podrá probar esta conexión.

Paso 3: Crear los Descriptores de Despliegue

El único descriptor que necesita es web.xml que fue generado por JDeveloper10g cuando se creó la página web.

Paso 4: Crear los Perfiles de Despliegue para cada Capa

Edite el perfil de despliegue para el cliente web. Aségurese de configurar la conexión fuente con la conexión a Tomcat que creó en el paso 2. Introduzca el nombre correcto para el fichero War. En Tomcat el contexto raíz está basado en el nombre de la carpeta de la aplicación Web.

Paso 5: Crear un Perfil de Desliegue Global (Sólo para tres Capas)

Saltese este paso.

Paso 6: Desplegar la Aplicación

  • Pulse con el botón derecho sobre webapp.deploy.
  • Seleccione deploy to tomcat

Paso 7: Probar la Aplicación

Pruebe la aplicación tecleando http://localhost:8080/[warfilename]/departments.jsp en un navegador

Desplegar en JBoss 3.2.x

JBoss es otro popular servidor de aplicaciones 'open source'. Ese servidor contiene un contenedor web y un contenedor EJB. Si despliegua la aplicación de dos capas puede seguir los pasos descritos en la sección de Tomcat. Para la coneción de tres capas necesitará realizar algún trabajo extra.

Paso 1: Instalar las Librerías de Ejecución de ADF

Esto es similar a la instalación de las librerías en OC4J.

Paso 2: Crear una Conexión al Servidor de Aplicaciones.

Este paso es similar a la creación de la conexión en un servidor Tomcat.

Paso 3: Crear los Descriptores de Despliegue

Al contrario que en el despliegue por defecto en OC4J, los administradores de JBoss 3.2.x no tiene acceso por defecto. Si no se configura un contexto de seguridad para la aplicación, nadie será capaz de acceder a ella. Para asegurar el acceso a aplicaciones desplegadas en JBoss, debe modificar el descriptor de despliegue de esta forma:

  • Abra el fichero ejb-jar.xml en el editor de código.
  • Añada al siguiente código al descriptor de ensamblaje:
    <method-permission>
        <unchecked/>
          <method>
            <ejb-name>EmpDeptFacade</ejb-name>
            <method-name>*</method-name>
          </method>
    </method-permission>
    					
  • Grabe los cambios.

JBoss también espera que los EJB se desplieguen con un descriptor de despliegue específico:

  • Pulse con el botón derecho sobre el proyecto BusinessServices y seleccione New....
  • Seleccione Deployment Descriptors en Categories
  • Seleccione jboss.xml en Items.
  • Añada una etiqueta de dominio de seguridad para el fichero jboss.xml (por ejemplo el dominio java:/jaas/other mostrado en este fichero de ejemplo):
    <?xml version = '1.0' encoding = 'windows-1252'?>
    
    <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
    
    <jboss>
      <enterprise-beans>
        <session>
          <ejb-name>EmpDeptFacade</ejb-name>
          <jndi-name>EmpDeptFacade</jndi-name>
        </session>
      </enterprise-beans>
      <security-domain>java:/jaas/other</security-domain>
    </jboss>
    					

    Observe que el nombre del dominio de seguridad que introduzca debe ser el mismo nombre de dominio de seguridad que se activó en el fichero login-config.xml del servidor, o se podría aplicar la seguridad por defecto para identidades no autentificadas.

    <policy>
        
        <!-- The default login configuration used by any security domain that
        does not have a application-policy entry with a matching name
        -->
        <application-policy name = "other">
           <authentication>
              <login-module code = "org.jboss.security.auth.spi.UsersRolesLoginModule"
                 flag = "required">
    		<module-option name = "unauthenticatedIdentity">guest</module-option>
    	   </login-module>
           </authentication>
        </application-policy>
    </policy>
    					
  • Grabe los cambios.

Paso 4: Crear los Perfiles de Despliegue para cada Capa

Esto es similar a los despliegues vistos anteriormente. Aségurese de incluir jboss.xml en el perfil de despliegue de la capa de servicios de negocio. Seleccione la plataforma correcta en todos los perfiles de despliegue.

Paso 5: Crear un Perfil de Desliegue Global (Sólo para tres Capas)

Esto es lo mismo que lo explicado para los otros servidores de aplicaciones.

Paso 6: Desplegar la Aplicación

Esto es similar al despliegue en BEA WebLogic. Aségurese de que las clases JDBC adecuadas están en el classpath del servidor.

Paso 7: Probar la Aplicación

JDeveloper10g no soporta la creación de un cliente de ejemplo para beans EJB desplegados en JBoss, por eso tendrá que crear su propio cliente. Aségurese de añadir una librería al proyecto que apunte a al fichero jbossall-client.jar. (Puede encontrar más información en la "Configuración Preliminar" de los pasos detallados para BEA WebLogic).

  • Pulse con el botón derecho sobre el proyecto BusinessServices y seleccione New....

  • Seleccione Simple Files en Categories.
  • Seleccione Java Class en Items.
  • Pulse OK.
  • Introduzca el nombre de la clase.
  • Introduzca el siguiente código en el editor:
    package buslogic;
    import java.util.Collection;
    import java.util.Hashtable;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    
    
    class TestClient {
      /**
       * 
       * @param args
       */
      public static void main(String[] args)  {
        TestClient testClient = new TestClient();
          try {
            Hashtable env = new Hashtable();      
            env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");  
            env.put(Context.PROVIDER_URL, "localhost");      
            env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces" ); 
    
            Context ctx = new InitialContext(env);
          
            //lookup the bean
            EmpDeptFacadeHome beanHome  = (EmpDeptFacadeHome )ctx.lookup("EmpDeptFacade");
    
            EmpDeptFacade empDeptFacade;
    
            // Use the create() method to create a new instance
            empDeptFacade = beanHome.create();
        
            Collection emps = empDeptFacade.getEmployees(  );
            System.out.println("number of emps: "+ emps.size());
            Collection depts = empDeptFacade.getDepartments(  );
            System.out.println("number of departments: "+ depts.size());
         }
         catch ( Exception ex ){
          ex.printStackTrace();
         }
      }       
    }
    					
  • Ejecute el cliente de prueba abriendo un Navegador y tecleando la siguiente URL:http://localhost:8080/departments/departments.jsp

Sumario

Oracle JDeveloper10g ofrece a los desarrolladores un completo soporte para desplegar aplicaciones empresariales. Los perfiles de despliegue son una forma fácil de desplegar una aplicación en su entorno. Los desarrolladores no tienen que preocuparse de los ficheros de configuración, de la estructura de los ficheros *.ear o de otros problemas. Esto es especialmente cierto para el despliegue en servidores Oracle. Si quiere desplegar aplicaciones ADF en otros servidores, requiere unos pocos conocimientos más sobre los componentes ADF y del propio servidor de aplicaciones.

En la segunda parte de este artículo podrá ver como desplegar la misma aplicación utilizando Ant.

Sobre la aplicación de Ejemplo:

Este artículo pasea por el proceso de despliegue de una típica aplicación J2EE que comprende tres capas, cada una de las cuales se sirve en su propio proyecto de Oracle JDeveloper:

  • Capa de Persistencia, desarrollada utilizando Oracle TopLink, que consta de objetos Java (POJOs) que han sido creados mediante ingenieria-inversa partiendo de tablas del conocido esquema HR.
  • Capa de servicios de negocio que sirve como una fachada para la capa de persistencia.
  • El cliente web, construido con ADF, que referencia los datos generados desde la capa de servicios de negocio. El cliente web muestra la lista de departamentos de las tablas que hay en el esquema HR.

La aplicación de ejemplo se ha arquitecturado en dos sabores ligeramente diferentes, para iluminar las diferencias entre el despliegue de una aplicación de tres capas (con un módulos EJB) y una con sólo dos capas (sólo el módulo Web). Específicamente, la aplicación comprende dos implementaciones diferentes de la capa de servicios de negocio:

  • Una aplicación de tres capas en la que la capa de servicios de negocio se ha implementado com un bean de sesión EJB.
  • Una aplicación de dos capas en la que la capa de servicios de negocio se ha implementado como un POJO (plain old Java object).

Ambas implementaciones de la capa de servicios de negocio sirven como fachadas para el mecanismo de persistencia subyacente: TopLink.

En la siguiente tabla puede ver un Inventaro de los Descriptores de Despliegue para la Aplicación de ejemplo:

Descritor de Despliegue Descripción funcional Ant Perfil ¿Requerido para la aplicación de dos capas?¿tres capas?
application.xml Descriptor de despliegue global que describe la aplicación J2EE, lista los módulos incluidos, el nombre de la aplicación y los roles de seguridad opcionales que son globales a la aplicación. Se debe crear Generado cuando se despliegua la aplicación Ambos, excepto cuando se despliega en Tomcat
ejb-jar.xml Descriptor de despliegue para módulos EJB. Lista todos los beans de sesión e identidad del archivo, y contiene un descriptor de ensamblaje. Este descriptor de ensamblaje consta de tres partes: definición de roles de seguridad, definición de los métodos de permisos y definición de los atributos de transación. Generado cuando crea el Bean Generado cuando crea el Bean Tres capas
web.xml Descriptor de despliegue para módulo web. Lista los servlets, los filtros de mapeo, las librerías de etiquetas, referencias a los EJBs, etc. Generado cuando añade una página Web al proyecto Generado cuando añade una página Web al proyecto Ambos
toplink-deployment-descriptor.xml Descriptor de la capa de persistencia. Este descriptor contiene información sobre la conexión JDBC y el mapeo. Se debe crear Se debe crear Ambos
orion-application.xml Descriptor de despliegue global que es específico para OC4J y Orion. Contiene información sobre la localización de los ficheros datasource.xml, principals.xml y otra información global de la aplicación. Se debe crear Generado cuando despliegua la aplicación de tres capas, excepto cuando se utiliza Toplink Tres capas, excepto cuando se utiliza TopLink
orion-ebj-jar.xml Descriptor especifico de Orion. Se utiliza para especificar los nombres de los EJBs, y puede mapear los EJBs a nombres JNDI. Generado cuando se crea el Bean Generado cuando se crea el Bean Tres capas
jboss.xml Descriptor específico de JBoss que mapea los EJBs a nombres JNDI Se debe crear Se debe crear Tres capas
weblogic-ejb-jar.xml Descriptor específico de BEA WebLogic que mepea los EJBs a nombres JNDI Se debe crear Se debe crear Tres capas

COMPARTE ESTE ARTÍCULO

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