Your SlideShare is downloading. ×
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Deploy
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Deploy

268

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
268
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Franklin Ramirez3090-09-10357Deploy (Despliiegues)El proceso de DesplieguePréviamente al despliegue real, las aplicaciones J2EE se entregan en un formatode archivo empresarial (*.ear, un fichero Java comprimido). Consta de uno o másmódulos J2EE y descriptores de despliegue. Un descriptor de despliegue es unfichero XML que proporciona información al contenedor J2EE sobre lascondiciones de despliegue de la aplicación o módulo.Entre los descriptores de despliegue se incluyen los descriptores de desplieguegené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ísticasespecíficas de cada contenedor J2EE. Un módulo J2EE consiste en uno o máscomponentes J2EE para el mismo tipo de contenedor con un descriptor dedespliegue para ese tipo. En este artículo, se explican un módulo EJB y un móduloweb. Un módulo EJB consta de uno o más EJBs (de sesión o de entidad) y otrosficheros de clases. El descriptor de despligue genérico es ejb-jar.xml. El módulo seempaqueta en un fichero *.jar. Un módulo web puede contener servlets, .jsp, .htmly clases java y se empaqueta como un fichero *.war. El descriptor de despliguegenérico es web.xml.Existen cuatro formas diferentes de desplegar aplicaciones J2EE construidasutilizando marcos de trabajo como Oracle ADF:Despliegue en CalienteUna aproximación que básicamente construye en el servidor el directorio, losficheros de clases, y otras estructuras que podrían ser descomprimidas desde unfichero *.ear. En vez de pre-empaquetar la aplicación y luego desplegarla en elservidor, el código de la aplicación se compila directamente en el servidor, en losdirectorios y subdirectorios apropiados. El problema de esta aproximación es quelos cambios en los descriptores u otros elementos declarativos podrían noactualizarse dinámicamente en el servidor, y podrían requerir un reinicio de éste.Perfiles de DespligueUna aproximación basada en un asistente (wizard), dirigida por el IDE o unaherramienta de despliegue, que resulta en un fichero que contiene toda lainformación necesaria para construir y desplegar un componente en un entornopartícular. Por ejemplo, Oracle JDeveloper 10g genera ficheros *.deploy,básandose en la configuración del proyecto activo, que contiene toda lainformación necesaria para construir y desplegar un componente desdeJDeveloper 10g a un servidor designado (Oracle Application Server, BEAWebLogic, standalone Oracle Application Server Containersfor J2EE 10g, Tomcat,o JBoss). Se pueden combinar diferentes perfiles de despliegue en un único perfilde despliegue. Uno de los artefactos generados por un perfil de despliegue son losdescriptores de despliegue para cada uno de los elementos de la aplicación.
  • 2. Franklin Ramirez3090-09-10357Apache AntUna aproximación programática utilizando la herramienta basada enJava Antpara construir y desplegar aplicaciones J2EE. Esta aproximación tienemuchas ventajas, como una abundante documentación y experiencia, una ampliaadopción de la herramienta, y la relativa facilidad con la que los desarrolladorespueden configurar esta herramienta para ayudarles a automatizar el cicloDesarrollo de Paginas Web Unidad 4 Servidor de aplicaciones webdesarrooladores pueden extender sus funcionalidades escribiendo sus propiastareas. Ant tiene soporte interno para CVS, JUnit, y otras tareas para que ustedpueda automatizar tanto la construcción y el despliegue como el proceso depruebas de código. Oracle JDeveloper10g hace fácil el despliegue utilizando Antproporcionando soporte para la creación y ejecución de tareas de Ant.Control de Despliegue basado en la ConsolaUna aproximación orientada al servidor que trata con herramientasadministrativas. La mayoría de los servidores de aplicaciones J2EE tienen unaconsola de control u otro tipo de interface de usuario para desplegar ficheros*.waro *.ear. Oracle, por ejemplo, soporta la utilización de una consola basada enweb para manejar el despliegue de aplicaciones J2EE en Oracle ApplicationServer; 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 losperfiles de despliegue de Oracle JDeveloper10g, y luego utilizando Ant (en laParte 2). No se verá el despliegue en caliente ni el despliegue desde consolas deservidores 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 Tabla1) en los que ocurre el proceso global:Desplegar en OC4JDesplegar en OC4J es especialmente fácil desde Oracle JDeveloper, y todos losficheros 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 OracleJDeveloper, y asumen que usted ya ha configurado el proyecto de ejemplo.Paso 1: Instalar las Librerías de Ejecución de ADFSi las librerías de ejecución de ADF no están instaladas en el servidor OC4J, o siquiere instalar una nueva versión: SeleccioneADF RuntimeInstalleren el menú tools. SeleccioneStandalone OC4J. SeleccioneNexten la página de bienvenida. Introduzca el directorio raíz de OC4J y seleccioneNext.SeleccioneInstall a new version of the ADF Runtime. PulseNexty Finish.
  • 3. Franklin Ramirez3090-09-10357Después de que la instalación termine satisfactoriamente, deberá reiniciar OC4J.Paso 2: Crear una Conexión con el Servidor de AplicacionesPara desplegar en OC4J utilizando perfiles de despliegue, debe crear unaconexión con el servidor. Cuando configure OC4J, aségurese de que haconcecidoprivielegios de "administrative" al usuario que planea utilizar con laspropiedades de conexión.Seleccione la pestaña Connectionsen el navegador. Desarrollo de Paginas WebUnidad 4 Servidor de aplicaciones webde construcción y despliegue. Además,como Ant, está escrito en Java, losHaga doble click en Application server. Introduzca el nombre de la conexión (oc4j) y seleccione el tipo StandaloneOC4J. PulseNext. Introduzca el nombre de usuario y la password del adminstrador de OC4J yseleccione el checkboxdeploypassword. PulseNext. Chequee la URL, y pulseNext. Pruebe la conexión pulsando sobre el botónTest connection. Si el resultado esSuccesspulse sobre Next. PulseFinish.Ahora ya podrá navegar por el árbor JNDI en el panel de conexiones, expandiendoel árbol.Paso 3: Crear los Descriptores de DeplieguePor cada capa de la aplicación (presentación, servicios de negocio, y persistencia)debe crear los descriptores de despliegue apropiados. Empecemos con elproyecto Oracle TopLink. Pulse con el botón derecho sobre el objeto TopLinkMappingen el proyectoToplink.SeleccioneGenerate toplink-deployment-descriptor.xmlOracle JDeveloper genera un fichero XML que contiene informacón sobre elnombre del proyecto, el login a la base de datos, y los descriptores para losmapeos 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 OracleJDeveloper 10g en el momento de la creación del EJB. Además también deberíatener disponibles los descriptores de despliegue de su capa de presentación(web.xml). Al añadir JSPs (JavaServerPages) a su proyecto web, OracleJDeveloper 10g genera automáticamente los descriptores apropiados.Paso 4: Crear Perfiles de Despliegue para cada CapaOracle JDeveloper10g escanea las propiedades del proyecto para determinar losficheros y librerías que necesita empaquetar en el módulo J2EE. Tenga cuidadode las dependencias entre los distintos proyectos del workspace, de esta forma:
  • 4. Franklin Ramirez3090-09-10357 Para el proyecto de tres capas, el proyecto BusinessServices depende delproyecto TopLinkModel Para el proyecto de dos capas, el proyecto WebView depende de los proyectosTopLinkModel y BusinessServices.Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web
  • 5. Franklin Ramirez3090-09-10357Como desplegamos los objetos de TopLink con el proyecto de servicios denegocio (tres capas) o el proyecto web (dos capas) no necesitamos generar unperfil de despliegue para esos objetos.Para la configuración de tres capas, empezaremos generando un perfil dedespliegue para la capa de servicios de negocio: Pulse con el botón derecho sobre el proyecto de servicios de negocio yseleccione New. SeleccioneDeploymentProfilesen Categories. SeleccioneEJB JAR File en Items.Pulse OK.SeleccioneFilters bajoProject output. Asegurese de que las clases de TopLink de la capa de persistencia están enesta pestaña: SeleccionePlatformy seleccione la conexión hacia OC4J que creó en el paso 2. PulseOK.Ahora podemos generar el perfil de despliegue para el cliente web. OracleJDeveloper10g genera un perfil de despliegue para el proyecto web cuando secrea, por eso sólo necesita editarlo. Haga doble click en el fichero webapp.deploy en la pestaña Resourcesdelproyecto web. Cambie el nombre del fichero war a departments.warSi está desplegando la aplicación de dos capas, chequee que las clases deTopLink y las clases de los servicos de negocio en las pestañas File groups, WEB-INF/classesy Filtersestán seleccionadas. Si no ve estas clases debe asegurarsede que ha seleccionado correctamente las dependencias del proyecto y que lo hacompilado. Seleccione la plataforma e introduza la conexión al servidor de aplicaciones quecreó 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 desplieguedel proyecto web para desplegar el archivo. Si quiere desplegar la aplicación detres caas, necesita un perfil de despliegue global que ensamble los dos módulosen un archivo. Pulse con el botón derecho sobre el proyecto BusinessServices y seleccioneNew... SeleccioneDeploymentProfilesen Categories. SeleccioneEAR file en Items. Introduzca el nombre del perfil de despliegue y pulseOK para iniciar el editor. EnGeneral, edite el nombre de la aplicación: SeleccioneApplicationassembly. Marque los perfiles de despliegueque ha creado para los módulos EJB y WAR: SeleccionePlatform.
  • 6. Franklin Ramirez3090-09-10357 Seleccione la conexión a OC4J que creó en el paso 2. PulseOK.Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones webPaso 6: Desplegar la Aplicación.Ahora ya estámos listos para desplegar la aplicación en OC4J. Primero veamoslos aspectos de despliegue de la aplicación de tres capas. Pulse con el botón derecho sobre el perfil de despliegue global. SeleccioneDeployto oc4j (esto debería ser el nombre de la conexión al servidorde aplicaciones que creó en el Paso 2).El despliegue empezará. El progreso se puede monitorizar tanto en el panel demensajes 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 deploydel proyecto para que puedareutilizarlo. application.xml (el descpriptor de aplicación J2EE estándar que lista el móduloEJB y el módulo Web de este ejemplo):<?xml version = 1.0 encoding = windows-1252?><!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EEApplication 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óndel fichero datasources.xml, en el que Oracle JDeveloper 10g almacena todas lasconexiones. (Cuando utiliza TopLink, la información sobre la conexión a la base dedatos se almacena en toplink-deployment-descriptor.xml, por eso no necesitarádatasources.xml).Paso 7: Probar la Aplicación DesplegadaEn 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.
  • 7. Franklin Ramirez3090-09-10357 Pulse con el botón derecho sobre el EmpDeptFacadeBean en el proyecto deservicios de negocio:SeleccioneNew Sample Java Client...SeleccioneConnect to Remote App Server. Seleccione el nombre de la aplicación J2EE que ha introducido en el perfil dedespliegue global. Seleccione el nombre del servidor de aplicaciones. PulseOKDesarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web Abra el fichero Java generado. Añada una sentencia importjava.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.jspSi desplegó la aplicación en otra máquina, introduzca su nombre en la URL. Siutilizó un contexto raíz diferente, cambie el nombre del contexto en la URL.El formato general es: http://[hostname]:[port]/[context-root]/[jspname].jspSi el despliegue se realizó con éxito, verá una página con una lista de los primerosdiez departamentos.Que son los contenedores en los servidores y cual es sufuncionamiento.El contenedor de bucles For define un flujo de control que se repite en un paquete.La implementación del bucle es similar a la estructura de bucle For de loslenguajes de programación. En cada repetición del bucle, el contenedor de buclesFor evalúa una expresión y repite el flujo de trabajo hasta que la expresión seevalúe como False.El contenedor de bucles For utiliza los siguientes elementos para definir el bucle:Una expresión de inicialización opcional que asigna valores a los contadoresde bucle.Una expresión de evaluación que contiene la expresión usada paracomprobar si el bucle debe detenerse o continuar.
  • 8. Franklin Ramirez3090-09-10357Una expresión de iteración opcional que incrementa o disminuye el contadordel bucle.El siguiente diagrama muestra un contenedor de bucles For con una tarea Enviarcorreo. Si la expresión de inicialización es @Counter = 0, la expresión deevaluación es @Counter< 4 y la expresión de iteración es @Counter = @Counter+ 1, el bucle se repetirá cuatro veces y enviará cuatro mensajes de correoelectrónico.Las expresiones deben ser expresiones de SQL Server 2005 IntegrationServicesválidas. Para obtener más información, vea Referencia de expresiones deIntegrationServices.Para crear las expresiones de inicialización y asignación, puede utilizar eloperador de asignación (=). La gramática de expresiones de IntegrationServicesno admite este operador; sólo se puede utilizar en las expresiones de inicializacióny asignación del contenedor de bucles For. Cualquier expresión que utilice eloperador de asignación debe tener la sintaxis @Var = <expression>, donde Var esuna variable de tiempo de ejecución y <expression> es una expresión que siguelas reglas de sintaxis de SSIS. La expresión puede incluir variables, literales ycualquier operador o función compatible con la gramática de expresiones de SSIS.La evaluación de la expresión debe devolver un tipo de datos que se puedaconvertir al tipo de datos de la variable.Un contenedor de bucles For sólo puede tener una expresión de evaluación. Estosignifica que el contenedor de bucles For ejecutará todos los elementos de flujo decontrol el mismo número de veces. Como el contenedor de bucles For puedeincluir otros contenedores de bucles For, es posible generar bucles anidados eimplementar bucles complejos en paquetes.Puede establecer una propiedad de transacción en el contenedor de bucles Forpara definir una transacción para un subconjunto del flujo de control del paquete.De esta manera, puede administrar las transacciones en mayor detalle. Porejemplo, si un contenedor de bucles For repite un flujo de control que actualiza losdatos de una tabla varias veces, puede configurar el bucle For y su flujo de controlpara que utilicen una transacción, a fin de asegurarse de que si no se actualizantodos los datos correctamente, no se actualice ningún dato. Para obtener másinformación, veaIncorporar transacciones en paquetes.Configurar el contenedor de bucles For
  • 9. Franklin Ramirez3090-09-10357Puede establecer propiedades a través del Diseñador SSIS o medianteprogramación.Para obtener más información acerca de las propiedades que puede establecer enel Diseñador SSIS, haga clic en uno de los temas siguientes:Editor de bucles ForPágina ExpresionesPara obtener más información sobre cómo establecer estas propiedades en elDiseñador SSIS, haga clic en uno de los temas siguientes:Cómo configurar un contenedor de bucles ForCómo establecer las propiedades de los contenedoresDefinición portable de DataSource en Java EE 6Antes de Java EE 6, podíamos crear objetos DataSource usando mecanismospropietarios de cada proveedor (como comandos), y así usábamos el DataSourceen la aplicación. Sin embargo, Java EE 6 hace que la definición de DataSourcesea más flexible. Java EE 6 presenta un nuevo mecanismo para definir objetosDataSource, que podemos declarar de forma portable en cualquier servidor deaplicaciones compatible con Java EE 6. Ahora podemos declarar las definicionesde los DataSource usando anotaciones o en los descriptores de despliegue.Las aplicaciones Java EE usan objetos DataSource cuando acceden a bases dedatos relacionales usando el API JDBC. Un DataSource tiene un conjunto depropieades que identifica y describe el origen de datos que representa. Estaspropiedades incluyen información como la ubicación del servidor de la base dedatos, el nombre de la base, y el protocolo de red para comunicarse. Además, losobjetos DataSource trabajan con el servicio de nombres JNDI (Java Naming andDirectory Interface). Una vez que un objeto DataSource está registrado en elservicio JNDI, las aplicaciones puedan usar el API JNDI para acceder al objetoDataSource, el cual se usa para conectarse a la base de datos que representa.CrearDataSource usando anotacionesJava EE 6 brinda dos nuevas anotaciones para crear definiciones deDataSource: @DataSourceDefinition y@DataSourceDefinitions. Ambasanotaciones están en el paquete javax.annotation.sql. Usamos la
  • 10. Franklin Ramirez3090-09-10357anotación@DataSourceDefinition para crear una única definición de DataSource.usamos la anotación@DataSourceDefinitions para crear múltiples definiciones deDataSource.La anotación @DataSourceDefinitionUsamos la anotación @DataSourceDefinition para crear una definición deDataSource. Podemos usar esta anotación en una clase de componente deaplicación, como un cliente de aplicación, servlet o EJB (Enterprise Java Bean).Esta anotación define un objeto DataSource y lo registra con JNDI. Configuramosal DataSource con las propiedades de la anotación. También podemos agregarpropiedades específicas para cada proveedor con el elemento properties de laanotación.Por ejemplo, la siguiente anotación crea una definición de DataSource para unabase de datos Derby:@DataSourceDefinition(name = "java:app/env/Servlet_DataSource",minPoolSize = 0,initialPoolSize = 0,className = "org.apache.derby.jdbc.ClientXADataSource",user = "APP",password = "APP",databaseName = "testdb",properties = {"connectionAttributes=;create=true"})La definición del DataSource se identifica de forma unívoca con el elemento name.Este es el nombre JNDI con el cual se registrará el DataSource. Noten que elnombre de este elemento comienza con un namespace de alcance, en estecasojava:app. Java EE 6 introduce namespaces de entorno para componentes deaplicaciones, que incluye los siguientes alcances:java:comp. Los nombres en este namespace tienen visibilidad para elcomponente.java:module. Los nombres en este namespace son compartidos por todos loscomponentes de un módulo. Por ejemplo, los componentes EJB definidios en elarchivo ejb-jar.xmljava:app. Los nombres en este namespace son compartidos por todos loscomponentes y módulos de una aplicación. Por ejemplo, los componentes deapplication-client, web y EJB en un archivo .earjava:global. Los nombres en este namespace son compartidos por todas lasaplicaciones en el servidor.
  • 11. Franklin Ramirez3090-09-10357Dependiendo del namespace de alcance que indiquemos en el elemento name,podremos hacer que el DataSource esté disponible en un todo módulo, unaaplicación, o globalmente en todo el servidor. Entonces, si usamos los siguientesprefijos en el atributo name:java:comp/env/, el datasource estará disponible en todos los componentes endonde fue definido, como un servlet o EJB.java:module/env/, el datasource estará disponible para todos los componentesEJB definidos en el archivo ejb-jar.xmljava:app/env/, el datasource estará disponible para todos los componentes ymódulos de la aplicación, como componentes EJB, servlet y clientes de aplicación.La anotación @DataSourceDefinitionsPodemos usar la anotación @DataSourceDefinitions para crear múltiplesdefiniciones de DataSource en una clase de componente. Indicamos cadadefinición de DataSource en el elemento value de la anotación. Veamos unejemplo para crear mútiples definiciones para Derby en un EJB:@DataSourceDefinitions(value = {@DataSourceDefinition(name = "java:app/env/HelloStatefulEJB_DataSource",minPoolSize = 0,initialPoolSize = 0,className = "org.apache.derby.jdbc.ClientXADataSource",portNumber = 1527,serverName = "localhost",user = "APP",password = "APP",databaseName = "testdb",properties = {"connectionAttributes=;create=true"}),@DataSourceDefinition(name = "java:comp/env/HelloStatefulEJB_DataSource",minPoolSize = 0,initialPoolSize = 0,className = "org.apache.derby.jdbc.ClientXADataSource",portNumber = 1527,serverName = "localhost",user = "APP",password = "APP",databaseName = "testdb",
  • 12. Franklin Ramirez3090-09-10357properties = {"connectionAttributes=;create=true"})})@Statefulpublicclass HelloStatefulEJB implements HelloStateful {......}CrearDataSource usando descriptoresdedesplieguePodemos crear definiciones de DataSource usando un descriptor de despliegue,como application.xml, application-client.xml, web.xml, ejb-jar.xml. Por ejemplo, elsiguiente descriptor crea las mismas definiciones de DataSource que usamos enel ejemplo anterior:<data-source><name>java:app/env/Application_Level_DataSource</name><class-name>org.apache.derby.jdbc.ClientXADataSource</class-name><server-name>localhost</server-name><port-number>1527</port-number><database-name>testdb</database-name><user>APP</user><password>APP</password><property><name>connectionAttributes</name><value>;create=true</value></property></data-source>Vimos dos ejemplos para crear la misma definición de DataSource, usandoanotaciones y usando el descriptor de despliegue. De hecho, de esta manera esposible crear dos definiciones de DataSource con el mismo nombre. En este caso,los valores especificados en el descriptor de despliegue tienen precedencia porsobre las anotaciones. Por ejemplo, si creamos dos definiciones de DataSourcecon el mismo nombre, una usando anotaciones y la otra con el descriptor dedespliegue, e indicamos un nombre de base de datos en cada lugar, se usará elnombre de base de datos configurado en el descritpor. Sin embargo, y indicamos
  • 13. Franklin Ramirez3090-09-10357un valor en la anotación y no lo especificamos en el descriptor, se usará el valorde la anotación en conjunto con la información del descriptor.

×