SlideShare una empresa de Scribd logo
1 de 13
Franklin Ramirez
3090-09-10357
Deploy (Despliiegues)
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 Containersfor 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.
Franklin Ramirez
3090-09-10357
Apache AntUna aproximación programática utilizando la herramienta basada en
Java Antpara 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
Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web
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
*.waro *.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:
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:
 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.
Franklin Ramirez
3090-09-10357
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
concecidoprivielegios de "administrative" al usuario que planea utilizar con las
propiedades de conexión.
Seleccione la pestaña Connectionsen el navegador. Desarrollo de Paginas Web
Unidad 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 Standalone
OC4J.
 PulseNext.
 Introduzca el nombre de usuario y la password del adminstrador de OC4J y
seleccione 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, 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 TopLinkMappingen el proyecto
Toplink.
SeleccioneGenerate 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 (JavaServerPages) 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:
Franklin Ramirez
3090-09-10357
 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.
Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web
Franklin Ramirez
3090-09-10357
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.
 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 en
esta 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. 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 Resourcesdel
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/classesy Filtersestá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...
 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.
Franklin Ramirez
3090-09-10357
 Seleccione la conexión a OC4J que creó en el paso 2.
 PulseOK.
Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web
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.
 SeleccioneDeployto 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 deploydel 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.
Franklin Ramirez
3090-09-10357
 Pulse con el botón derecho sobre el EmpDeptFacadeBean en el proyecto de
servicios 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 de
despliegue global.
 Seleccione el nombre del servidor de aplicaciones.
 PulseOK
Desarrollo 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.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.
Que son los contenedores en los servidores y cual es su
funcionamiento.
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 los
lenguajes de programación. En cada repetición del bucle, el contenedor de bucles
For evalúa una expresión y repite el flujo de trabajo hasta que la expresión se
evalú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 contadores
de bucle.
Una expresión de evaluación que contiene la expresión usada para
comprobar si el bucle debe detenerse o continuar.
Franklin Ramirez
3090-09-10357
Una expresión de iteración opcional que incrementa o disminuye el contador
del bucle.
El siguiente diagrama muestra un contenedor de bucles For con una tarea Enviar
correo. Si la expresión de inicialización es @Counter = 0, la expresión de
evaluació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 correo
electrónico.
Las expresiones deben ser expresiones de SQL Server 2005 IntegrationServices
válidas. Para obtener más información, vea Referencia de expresiones de
IntegrationServices.
Para crear las expresiones de inicialización y asignación, puede utilizar el
operador de asignación (=). La gramática de expresiones de IntegrationServices
no admite este operador; sólo se puede utilizar en las expresiones de inicialización
y asignación del contenedor de bucles For. Cualquier expresión que utilice el
operador de asignación debe tener la sintaxis @Var = <expression>, donde Var es
una variable de tiempo de ejecución y <expression> es una expresión que sigue
las reglas de sintaxis de SSIS. La expresión puede incluir variables, literales y
cualquier 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 pueda
convertir al tipo de datos de la variable.
Un contenedor de bucles For sólo puede tener una expresión de evaluación. Esto
significa que el contenedor de bucles For ejecutará todos los elementos de flujo de
control el mismo número de veces. Como el contenedor de bucles For puede
incluir otros contenedores de bucles For, es posible generar bucles anidados e
implementar bucles complejos en paquetes.
Puede establecer una propiedad de transacción en el contenedor de bucles For
para definir una transacción para un subconjunto del flujo de control del paquete.
De esta manera, puede administrar las transacciones en mayor detalle. Por
ejemplo, si un contenedor de bucles For repite un flujo de control que actualiza los
datos de una tabla varias veces, puede configurar el bucle For y su flujo de control
para que utilicen una transacción, a fin de asegurarse de que si no se actualizan
todos los datos correctamente, no se actualice ningún dato. Para obtener más
información, veaIncorporar transacciones en paquetes.
Configurar el contenedor de bucles For
Franklin Ramirez
3090-09-10357
Puede establecer propiedades a través del Diseñador SSIS o mediante
programación.
Para obtener más información acerca de las propiedades que puede establecer en
el Diseñador SSIS, haga clic en uno de los temas siguientes:
Editor de bucles For
Página Expresiones
Para obtener más información sobre cómo establecer estas propiedades en el
Diseñador SSIS, haga clic en uno de los temas siguientes:
Cómo configurar un contenedor de bucles For
Cómo establecer las propiedades de los contenedores
Definición portable de DataSource en Java EE 6
Antes de Java EE 6, podíamos crear objetos DataSource usando mecanismos
propietarios de cada proveedor (como comandos), y así usábamos el DataSource
en la aplicación. Sin embargo, Java EE 6 hace que la definición de DataSource
sea más flexible. Java EE 6 presenta un nuevo mecanismo para definir objetos
DataSource, que podemos declarar de forma portable en cualquier servidor de
aplicaciones compatible con Java EE 6. Ahora podemos declarar las definiciones
de los DataSource usando anotaciones o en los descriptores de despliegue.
Las aplicaciones Java EE usan objetos DataSource cuando acceden a bases de
datos relacionales usando el API JDBC. Un DataSource tiene un conjunto de
propieades que identifica y describe el origen de datos que representa. Estas
propiedades incluyen información como la ubicación del servidor de la base de
datos, el nombre de la base, y el protocolo de red para comunicarse. Además, los
objetos DataSource trabajan con el servicio de nombres JNDI (Java Naming and
Directory Interface). Una vez que un objeto DataSource está registrado en el
servicio JNDI, las aplicaciones puedan usar el API JNDI para acceder al objeto
DataSource, el cual se usa para conectarse a la base de datos que representa.
CrearDataSource usando anotaciones
Java EE 6 brinda dos nuevas anotaciones para crear definiciones de
DataSource: @DataSourceDefinition y@DataSourceDefinitions. Ambas
anotaciones están en el paquete javax.annotation.sql. Usamos la
Franklin Ramirez
3090-09-10357
anotación@DataSourceDefinition para crear una única definición de DataSource.
usamos la anotación@DataSourceDefinitions para crear múltiples definiciones de
DataSource.
La anotación @DataSourceDefinition
Usamos la anotación @DataSourceDefinition para crear una definición de
DataSource. Podemos usar esta anotación en una clase de componente de
aplicació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. Configuramos
al DataSource con las propiedades de la anotación. También podemos agregar
propiedades específicas para cada proveedor con el elemento properties de la
anotación.
Por ejemplo, la siguiente anotación crea una definición de DataSource para una
base 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 el
nombre de este elemento comienza con un namespace de alcance, en este
casojava:app. Java EE 6 introduce namespaces de entorno para componentes de
aplicaciones, que incluye los siguientes alcances:
java:comp. Los nombres en este namespace tienen visibilidad para el
componente.
java:module. Los nombres en este namespace son compartidos por todos los
componentes de un módulo. Por ejemplo, los componentes EJB definidios en el
archivo ejb-jar.xml
java:app. Los nombres en este namespace son compartidos por todos los
componentes y módulos de una aplicación. Por ejemplo, los componentes de
application-client, web y EJB en un archivo .ear
java:global. Los nombres en este namespace son compartidos por todas las
aplicaciones en el servidor.
Franklin Ramirez
3090-09-10357
Dependiendo del namespace de alcance que indiquemos en el elemento name,
podremos hacer que el DataSource esté disponible en un todo módulo, una
aplicación, o globalmente en todo el servidor. Entonces, si usamos los siguientes
prefijos en el atributo name:
java:comp/env/, el datasource estará disponible en todos los componentes en
donde fue definido, como un servlet o EJB.
java:module/env/, el datasource estará disponible para todos los componentes
EJB definidos en el archivo ejb-jar.xml
java:app/env/, el datasource estará disponible para todos los componentes y
módulos de la aplicación, como componentes EJB, servlet y clientes de aplicación.
La anotación @DataSourceDefinitions
Podemos usar la anotación @DataSourceDefinitions para crear múltiples
definiciones de DataSource en una clase de componente. Indicamos cada
definición de DataSource en el elemento value de la anotación. Veamos un
ejemplo 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",
Franklin Ramirez
3090-09-10357
properties = {"connectionAttributes=;create=true"}
)
}
)
@Stateful
publicclass HelloStatefulEJB implements HelloStateful {
...
...
}
CrearDataSource usando descriptoresdedespliegue
Podemos crear definiciones de DataSource usando un descriptor de despliegue,
como application.xml, application-client.xml, web.xml, ejb-jar.xml. Por ejemplo, el
siguiente descriptor crea las mismas definiciones de DataSource que usamos en
el 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, usando
anotaciones y usando el descriptor de despliegue. De hecho, de esta manera es
posible crear dos definiciones de DataSource con el mismo nombre. En este caso,
los valores especificados en el descriptor de despliegue tienen precedencia por
sobre las anotaciones. Por ejemplo, si creamos dos definiciones de DataSource
con el mismo nombre, una usando anotaciones y la otra con el descriptor de
despliegue, e indicamos un nombre de base de datos en cada lugar, se usará el
nombre de base de datos configurado en el descritpor. Sin embargo, y indicamos
Franklin Ramirez
3090-09-10357
un valor en la anotación y no lo especificamos en el descriptor, se usará el valor
de la anotación en conjunto con la información del descriptor.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (13)

Josi22
Josi22Josi22
Josi22
 
visual.basic
visual.basicvisual.basic
visual.basic
 
Tutorial eclipse
Tutorial eclipseTutorial eclipse
Tutorial eclipse
 
Manual jdk
Manual jdkManual jdk
Manual jdk
 
REPORTES
REPORTESREPORTES
REPORTES
 
Mi primera-hora-con-eclipse
Mi primera-hora-con-eclipseMi primera-hora-con-eclipse
Mi primera-hora-con-eclipse
 
Elementos de eclipse
Elementos de eclipseElementos de eclipse
Elementos de eclipse
 
Ejercicio basico en asp.net LOZADA ERICK
Ejercicio basico en asp.net LOZADA ERICKEjercicio basico en asp.net LOZADA ERICK
Ejercicio basico en asp.net LOZADA ERICK
 
UDA-Migracion a v2
UDA-Migracion a v2UDA-Migracion a v2
UDA-Migracion a v2
 
Introducción al desarrollo de aplicaciones web
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones web
Introducción al desarrollo de aplicaciones web
 
eclipse
eclipseeclipse
eclipse
 
File
FileFile
File
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
 

Destacado

Guía 39 Emprendimiento en las aulas
Guía 39 Emprendimiento en las aulasGuía 39 Emprendimiento en las aulas
Guía 39 Emprendimiento en las aulasIsabellaOM
 
Experiencias Usando la Tecnología ADF
Experiencias Usando la Tecnología ADF Experiencias Usando la Tecnología ADF
Experiencias Usando la Tecnología ADF Refundation
 
Getting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentationGetting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentationBerry Clemens
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x TechnologyWebVisions
 
The Near Future of CSS
The Near Future of CSSThe Near Future of CSS
The Near Future of CSSRachel Andrew
 
How to Battle Bad Reviews
How to Battle Bad ReviewsHow to Battle Bad Reviews
How to Battle Bad ReviewsGlassdoor
 
Classroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and AdolescentsClassroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and AdolescentsShelly Sanchez Terrell
 
The Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris LemaThe Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris LemaChris Lema
 
The Presentation Come-Back Kid
The Presentation Come-Back KidThe Presentation Come-Back Kid
The Presentation Come-Back KidEthos3
 

Destacado (14)

Guía 39 Emprendimiento en las aulas
Guía 39 Emprendimiento en las aulasGuía 39 Emprendimiento en las aulas
Guía 39 Emprendimiento en las aulas
 
Mdia3002 image gallery
Mdia3002 image galleryMdia3002 image gallery
Mdia3002 image gallery
 
Experiencias Usando la Tecnología ADF
Experiencias Usando la Tecnología ADF Experiencias Usando la Tecnología ADF
Experiencias Usando la Tecnología ADF
 
Zilveren.jur.004
Zilveren.jur.004Zilveren.jur.004
Zilveren.jur.004
 
Getting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentationGetting optimal performance from oracle e-business suite presentation
Getting optimal performance from oracle e-business suite presentation
 
Zoosk.jur.008
Zoosk.jur.008Zoosk.jur.008
Zoosk.jur.008
 
Zoosk.jur.007
Zoosk.jur.007Zoosk.jur.007
Zoosk.jur.007
 
Zilveren.jur.006
Zilveren.jur.006Zilveren.jur.006
Zilveren.jur.006
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x Technology
 
The Near Future of CSS
The Near Future of CSSThe Near Future of CSS
The Near Future of CSS
 
How to Battle Bad Reviews
How to Battle Bad ReviewsHow to Battle Bad Reviews
How to Battle Bad Reviews
 
Classroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and AdolescentsClassroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and Adolescents
 
The Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris LemaThe Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris Lema
 
The Presentation Come-Back Kid
The Presentation Come-Back KidThe Presentation Come-Back Kid
The Presentation Come-Back Kid
 

Similar a Deploy

Similar a Deploy (20)

[ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition [ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition
 
Tutorial javafx-primeros-pasos
Tutorial javafx-primeros-pasosTutorial javafx-primeros-pasos
Tutorial javafx-primeros-pasos
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Reporte servicios web
Reporte servicios webReporte servicios web
Reporte servicios web
 
como hacer una conexion con mysql
como hacer una conexion con mysqlcomo hacer una conexion con mysql
como hacer una conexion con mysql
 
Resumen jee
Resumen jeeResumen jee
Resumen jee
 
Tutorial de eclipsee
Tutorial de eclipseeTutorial de eclipsee
Tutorial de eclipsee
 
TUTORIAL
TUTORIALTUTORIAL
TUTORIAL
 
Manual_java.pdf
Manual_java.pdfManual_java.pdf
Manual_java.pdf
 
Un lenguaje de_cuarta_generacion_oracle
Un lenguaje de_cuarta_generacion_oracleUn lenguaje de_cuarta_generacion_oracle
Un lenguaje de_cuarta_generacion_oracle
 
Sercicios web
Sercicios webSercicios web
Sercicios web
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java
 
03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee
 
Oracle Forms
Oracle FormsOracle Forms
Oracle Forms
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Video
VideoVideo
Video
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 

Deploy

  • 1. Franklin Ramirez 3090-09-10357 Deploy (Despliiegues) 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 Containersfor 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.
  • 2. Franklin Ramirez 3090-09-10357 Apache AntUna aproximación programática utilizando la herramienta basada en Java Antpara 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 Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web 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 *.waro *.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: 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:  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 Ramirez 3090-09-10357 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 concecidoprivielegios de "administrative" al usuario que planea utilizar con las propiedades de conexión. Seleccione la pestaña Connectionsen el navegador. Desarrollo de Paginas Web Unidad 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 Standalone OC4J.  PulseNext.  Introduzca el nombre de usuario y la password del adminstrador de OC4J y seleccione 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, 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 TopLinkMappingen el proyecto Toplink. SeleccioneGenerate 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 (JavaServerPages) 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:
  • 4. Franklin Ramirez 3090-09-10357  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. Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web
  • 5. Franklin Ramirez 3090-09-10357 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.  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 en esta 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. 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 Resourcesdel 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/classesy Filtersestá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...  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 Ramirez 3090-09-10357  Seleccione la conexión a OC4J que creó en el paso 2.  PulseOK. Desarrollo de Paginas Web Unidad 4 Servidor de aplicaciones web 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.  SeleccioneDeployto 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 deploydel 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.
  • 7. Franklin Ramirez 3090-09-10357  Pulse con el botón derecho sobre el EmpDeptFacadeBean en el proyecto de servicios 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 de despliegue global.  Seleccione el nombre del servidor de aplicaciones.  PulseOK Desarrollo 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.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. Que son los contenedores en los servidores y cual es su funcionamiento. 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 los lenguajes de programación. En cada repetición del bucle, el contenedor de bucles For evalúa una expresión y repite el flujo de trabajo hasta que la expresión se evalú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 contadores de bucle. Una expresión de evaluación que contiene la expresión usada para comprobar si el bucle debe detenerse o continuar.
  • 8. Franklin Ramirez 3090-09-10357 Una expresión de iteración opcional que incrementa o disminuye el contador del bucle. El siguiente diagrama muestra un contenedor de bucles For con una tarea Enviar correo. Si la expresión de inicialización es @Counter = 0, la expresión de evaluació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 correo electrónico. Las expresiones deben ser expresiones de SQL Server 2005 IntegrationServices válidas. Para obtener más información, vea Referencia de expresiones de IntegrationServices. Para crear las expresiones de inicialización y asignación, puede utilizar el operador de asignación (=). La gramática de expresiones de IntegrationServices no admite este operador; sólo se puede utilizar en las expresiones de inicialización y asignación del contenedor de bucles For. Cualquier expresión que utilice el operador de asignación debe tener la sintaxis @Var = <expression>, donde Var es una variable de tiempo de ejecución y <expression> es una expresión que sigue las reglas de sintaxis de SSIS. La expresión puede incluir variables, literales y cualquier 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 pueda convertir al tipo de datos de la variable. Un contenedor de bucles For sólo puede tener una expresión de evaluación. Esto significa que el contenedor de bucles For ejecutará todos los elementos de flujo de control el mismo número de veces. Como el contenedor de bucles For puede incluir otros contenedores de bucles For, es posible generar bucles anidados e implementar bucles complejos en paquetes. Puede establecer una propiedad de transacción en el contenedor de bucles For para definir una transacción para un subconjunto del flujo de control del paquete. De esta manera, puede administrar las transacciones en mayor detalle. Por ejemplo, si un contenedor de bucles For repite un flujo de control que actualiza los datos de una tabla varias veces, puede configurar el bucle For y su flujo de control para que utilicen una transacción, a fin de asegurarse de que si no se actualizan todos los datos correctamente, no se actualice ningún dato. Para obtener más información, veaIncorporar transacciones en paquetes. Configurar el contenedor de bucles For
  • 9. Franklin Ramirez 3090-09-10357 Puede establecer propiedades a través del Diseñador SSIS o mediante programación. Para obtener más información acerca de las propiedades que puede establecer en el Diseñador SSIS, haga clic en uno de los temas siguientes: Editor de bucles For Página Expresiones Para obtener más información sobre cómo establecer estas propiedades en el Diseñador SSIS, haga clic en uno de los temas siguientes: Cómo configurar un contenedor de bucles For Cómo establecer las propiedades de los contenedores Definición portable de DataSource en Java EE 6 Antes de Java EE 6, podíamos crear objetos DataSource usando mecanismos propietarios de cada proveedor (como comandos), y así usábamos el DataSource en la aplicación. Sin embargo, Java EE 6 hace que la definición de DataSource sea más flexible. Java EE 6 presenta un nuevo mecanismo para definir objetos DataSource, que podemos declarar de forma portable en cualquier servidor de aplicaciones compatible con Java EE 6. Ahora podemos declarar las definiciones de los DataSource usando anotaciones o en los descriptores de despliegue. Las aplicaciones Java EE usan objetos DataSource cuando acceden a bases de datos relacionales usando el API JDBC. Un DataSource tiene un conjunto de propieades que identifica y describe el origen de datos que representa. Estas propiedades incluyen información como la ubicación del servidor de la base de datos, el nombre de la base, y el protocolo de red para comunicarse. Además, los objetos DataSource trabajan con el servicio de nombres JNDI (Java Naming and Directory Interface). Una vez que un objeto DataSource está registrado en el servicio JNDI, las aplicaciones puedan usar el API JNDI para acceder al objeto DataSource, el cual se usa para conectarse a la base de datos que representa. CrearDataSource usando anotaciones Java EE 6 brinda dos nuevas anotaciones para crear definiciones de DataSource: @DataSourceDefinition y@DataSourceDefinitions. Ambas anotaciones están en el paquete javax.annotation.sql. Usamos la
  • 10. Franklin Ramirez 3090-09-10357 anotación@DataSourceDefinition para crear una única definición de DataSource. usamos la anotación@DataSourceDefinitions para crear múltiples definiciones de DataSource. La anotación @DataSourceDefinition Usamos la anotación @DataSourceDefinition para crear una definición de DataSource. Podemos usar esta anotación en una clase de componente de aplicació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. Configuramos al DataSource con las propiedades de la anotación. También podemos agregar propiedades específicas para cada proveedor con el elemento properties de la anotación. Por ejemplo, la siguiente anotación crea una definición de DataSource para una base 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 el nombre de este elemento comienza con un namespace de alcance, en este casojava:app. Java EE 6 introduce namespaces de entorno para componentes de aplicaciones, que incluye los siguientes alcances: java:comp. Los nombres en este namespace tienen visibilidad para el componente. java:module. Los nombres en este namespace son compartidos por todos los componentes de un módulo. Por ejemplo, los componentes EJB definidios en el archivo ejb-jar.xml java:app. Los nombres en este namespace son compartidos por todos los componentes y módulos de una aplicación. Por ejemplo, los componentes de application-client, web y EJB en un archivo .ear java:global. Los nombres en este namespace son compartidos por todas las aplicaciones en el servidor.
  • 11. Franklin Ramirez 3090-09-10357 Dependiendo del namespace de alcance que indiquemos en el elemento name, podremos hacer que el DataSource esté disponible en un todo módulo, una aplicación, o globalmente en todo el servidor. Entonces, si usamos los siguientes prefijos en el atributo name: java:comp/env/, el datasource estará disponible en todos los componentes en donde fue definido, como un servlet o EJB. java:module/env/, el datasource estará disponible para todos los componentes EJB definidos en el archivo ejb-jar.xml java:app/env/, el datasource estará disponible para todos los componentes y módulos de la aplicación, como componentes EJB, servlet y clientes de aplicación. La anotación @DataSourceDefinitions Podemos usar la anotación @DataSourceDefinitions para crear múltiples definiciones de DataSource en una clase de componente. Indicamos cada definición de DataSource en el elemento value de la anotación. Veamos un ejemplo 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 Ramirez 3090-09-10357 properties = {"connectionAttributes=;create=true"} ) } ) @Stateful publicclass HelloStatefulEJB implements HelloStateful { ... ... } CrearDataSource usando descriptoresdedespliegue Podemos crear definiciones de DataSource usando un descriptor de despliegue, como application.xml, application-client.xml, web.xml, ejb-jar.xml. Por ejemplo, el siguiente descriptor crea las mismas definiciones de DataSource que usamos en el 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, usando anotaciones y usando el descriptor de despliegue. De hecho, de esta manera es posible crear dos definiciones de DataSource con el mismo nombre. En este caso, los valores especificados en el descriptor de despliegue tienen precedencia por sobre las anotaciones. Por ejemplo, si creamos dos definiciones de DataSource con el mismo nombre, una usando anotaciones y la otra con el descriptor de despliegue, e indicamos un nombre de base de datos en cada lugar, se usará el nombre de base de datos configurado en el descritpor. Sin embargo, y indicamos
  • 13. Franklin Ramirez 3090-09-10357 un valor en la anotación y no lo especificamos en el descriptor, se usará el valor de la anotación en conjunto con la información del descriptor.