DATA SOURCE: ORIGEN DE DATOS
Lo que en esta entrada veremos son dos puntos principales:
- Crear un nuevo Data Source gestionado llamado SWDemoD utilizando el panel de administracion del Oracle Application Server.
- Comprobar que el Data Source se conecta con éxito a la base de datos de destino mediante el panel de administración del Oracle Application Server y la utilidad JMX.
1. ¿Qué es un Data Source?
Figura 1. ¿Qué es un DataSource?
Un Data Source es un nombre lógico asignado a las propiedades físicas de una base de datos, esta base de datos puede ser un Oracle 10g, MySql o cualquier otro del mercado.
En el entorno J2EE, un Data Source es asociado con un paquete de propiedades que especifican los detalles de como comunicarse con los recursos físicos de administración de datos. En la figura 1 se muestra que en una primera instancia la duplicación esta conectada con una Base de datos pero si pusiéramos otra base de datos, se alteraría las propiedades del Data Source para identificar la nueva base de datos, en este caso la aplicación no seria alterada ya que apuntarían al mismo nombre de Data Source.
Las propiedades de los Data Source identifican los recursos necesarios para facilitar la comunicación entre el Data Source y sus objetivos como los JDBC Drivers (Drivers necesarios para habilitar el acceso a datos).
Los Data Sources son metodos portables para la creación de conecciones JDBC. Un Data Source es la instancia de un objeto que implementa la interfaz javax.sql.DataSource, que nos permite recuperar una conección a un servidor de base de datos.
- El Data Source del OC4J (Oracle Container for Java) y sus propiedades son definidas en el archivo data-sources.xml (hace referencia a un Data Source pre instalado llamado jdbc/OracleDS) , que se puede localizar en:
- El directorio de configuración del Servidor J2EE.
- Un archivo de la aplicación.
El archivo data-sources.xml puede definir el Data Source para ser usado por todas las aplicaciones deplegadas en el contenedor (Servidor de aplicaciones) ya que contiene un paquete de definiciones Data Source. Adicionalmente, cada aplicación J2EE puede desplegarse con su propio data-sources.xml que contendra un Data Source especifico para cada aplicación, en este caso cada data-sources.xml esta empaquetado en un archivo EAR.
El OC4J esta predefinido para trabajar con una base de datos Oracle pero se dan casos en que se necesite trabjar con otra base de datos, en estos casos hay que modificar las propiedades por defecto del data Source para asociarlo con la base de datos que se vaya a utilizar. Ademas se tiene que añadir las definiciones personalizadas del motor de base de datos.
- Los data Source globales son definidos en /config/data-sources.xml donde es la carpeta donde OC4J fue desplegada durante la instalacion.
- Para especificar cada Data Source se debe usar un tags XML de modo que cada uno muestre atributos y valores del Data Source. Para una aplicacion en JDeveloper y su OC4J de prueba se debe usar el tag que se encuentra en el archivo orion-application.xml.
- Las aplicaciones J2EE usan JNDI para buscar los objetos Data Source a través de sus nombres.
- Los drivers JDBC son usados para recuperar datos desde los Data Source.
2. ¿Qué Driver JDBC usar?
Existen 4 tipos, cada uno de ellos tiene sus ventajas y desventajas, y debe fijarse bien en cada una de ellas para elegir el adecuado JDBC para la aplicación.
2.1 Puente JDBC-ODBC: Traduce las llamadas JDBC a llamadas ODBC para la Base de datos, este driver es usado para base de datos que tengan drivers ODBC pero sin soporte JDBC por ello requiere que este preinstalado en el cliente.
2.2 API parcialmente nativo - JAVA Driver: Traduce las llamadas JDBC a llamadas de API nativo para la Base de datos, este driver es mejor que el primero (puente) ya que utiliza un API Nativo en lugar de ODBC. También requiere que este preinstalado en el cliente.
2.3 Protocolo Net - JAVA Driver: Traduce las llamadas JDBC a llamadas a la Base de datos, independiente del protocolo net, ya que se traduce por un middleware desde el protocolo net para el protocolo de la base de datos. No requiere que este preinstalado en el cliente.
2.4 Protocolo nativo - JAVA Driver: Traduce las llamadas JDBC directamente para el protocolo de la base de datos sin necesidad de usar un intermediario en la traduccion. Este driver soporta aplicaciones de intranet mejor que los otros drivers porque no requiere middleware y establece coneccion directa con la base de datos.No requiere que este preinstalado en el cliente.
Ademas de los anteriores Oracle ofrece dos tipos diferentes de JDBC drivers:
2.5 JDBC OCI driver del lado del cliente (THICK DRIVER) : Driver con base en el 2.4.2 que usa metodos nativos de java para llamar a puntos de entrada (implementados en lenguaje C) de las librerias de interface de llamadas Oracle (OCI - Oracle Call Interface).
2.6 JDBC THIN driver del lado del cliente: Driver con base en el 2.4.4 que usa Java para conectarse directamente con Oracle. esta implementado con SQL*Net Net8 and TTC adapters usando su propio TCP/IP (Bansando su implementacion en sockets Java). El Driver JDBC no requiere estar instalado en el cliente.
De los dos ultimos drivers podemos afirmar que el mejor Driver para su uso con el OC4J 10g. es el THIN DRIVER, es la unica opcion disponible para el uso de Java Applets y generalmente tiene mayor rendimiento que el OCI driver. Sin embargo, el Oracle JDBC OCI driver es el mejor al manejar tipos de datos LOB (Por ejemplo, CLOB and BLOB).
3. Tipos de Data Source
En el Oracle Container for Java (OC4J), existen 2 tipos de Data Source, usan JDBC 3.0, soportan almacenamiento en cache de los drivers JDBC Oracle 10g, son faciles de configurar en el data-sources.xml, proveen de soporte JMX y de una reconfiguracion dinamica ademas pueden emular el comportamiento XA.
3.1 Data Source Nativo:
- Es proporcionado por los proveedores de drivers JDBC, como Oracle y DataDirect.
- Tiene una minima interacción con el OC4J.
- La Clase conección y otras clases no son soportados por el OC4J.
3.2 Data Source Administrado:
- Es administrado por el OC4J.
- Las clases proporcionadas por el JDBC driver tienen soporte en el OC4J.
- Expone las apis especificas de su proveedor.
- Utiliza el sistema de infraestructura critica que provee el OC4J, por ejemplo las transacciones globales, el almacenamiento en cache y el manejo de errores.
- Simula el comportamiento XA para los drivers que no soportan transacciones XA.
4. Soporte que brinda el Data Source al Oracle JDBC
La base de datos Oracle 10g tiene caracteristicas respecto al JDBC que permiten la integracion con el data Source del OC4J:
- Minimiza el tiempo de acceso a la base de datos.
- Permite el acceso transparente a funciones especiales de administracion como bandas de conexion, recuperacion de conexiones, actualizacion de conexiones y el costo en recursos de la recuperación de conecciones.
- Son habilitados cuando un connection-pool-name(*) es asignado a un Data Source. (De otra manera estaria deshabilitado).
(*)connection-pool-name: Es una propiedad del Data Source que es especificada en un formulario cuando se usa el panel de administracion de Data Source de nuestro OC4J. Tambien puede ser especificado manualmente editando el archivo de configuracion del data Source llamado data-sources.xml.
4.1 Almacenamiento Implicito de la coneccion en cache:
- Configurado en el Panel de Control del OC4J.
- Habilitado cuando un poll de conecciones son especficados para un Data Source.
- Deshabitado cuando un pool de conecciones no esta asociado con un Data Source.
4.2 Rápida coneccion en caso de fallo.
- Para entornos donde existan cluster de applicaciones.
- Testing permanente en el RAC ante fallos de conexión.
5. Creando un Data Source en el panel del OC4J
- Inicializar el OC4J Embebido, clic en strart_oc4j.bat este se encuentra en la carpeta JDEV/BIN en el directorio donde este nuestro JDeveloper.
- Verificar el inicio del OC4J, debe aparacer esta ventana indicando que se inicalizo:
- En la ventana inicial, hacer clic en el enlace de administracion del OC4J, en la ventana de inicion de sesión colocar el usuario (oc4jadmin) y contraseña (welcome) por defecto salvo que lo haya cambiado anteriormente.
- Click en la pestaña Administración, luego ubicar en el listado la opcion Servicios y luego hacer clic en la sub opción Recursos JDBC, en la ventana hacemos click en el botón crear Data Source o Origen de datos.
6. Creando un Data Source Administrado en el panel del OC4J
- En la ventana que aparece dejamos en default la opcion aplicación (Ya que no tenemos una especifica por el momento), en tipo de Data Source elegimos el Data Source gestionado que a diferencia del Nativo soporta transacciones globales y brinda mayores beneficios.
- Luego seteamos los parametros del Data Source como su nombre, un alias de su ubicacion cuando lo busquemos desde la aplicación, elegimos transacciones globales, un pool de conexiones ejemplo ( ya que no tenmos uno creado) y dejamos los demas parametros por defecto.
7. Configurando un Pool de conexiones
Un pool de conexiones es configurado por un Data Source Administrado y tiene los siguientes atributos:
- name: Dato Obligatorio que identifica al pool de conexiones.
- min-connections: Minimo número de conexiones.
- max-connections: Máximo número de conexiones en el pool.
- inactivity-timeout: Tiempo permitido para una conexion inactiva, luego del cual la conexión se eliminará del pool.
- num-cached-statements: Maximo espacio en cache permitido por conexión.
- abandoned-connection-timeout: Similar al inactivity-timeout pero este parametro trabaja para una conneción logica.
La configuracion del pool de conexiones incluye una nueva coneccion de cache implicita para los drivers JDBC y lo hace por separado del Data Source elegido. El Pool de conexiones tiene un soporte integrado para los fallos que pueda presentarse en el RAC además define emulacion de XA teniendo las siguientes consideraciones:
- Si el factory-classs es una instancia de javax.sql.XADataSource este no presentará XA emulado.
- Si el factory-class es una instancia de java.sql.Driver, javax.sql.DataSource o javax.sql.ConnectionPoolDataSource este presentará XA emulado.
Siempre es mejor configurar el pool de conexiones usando el panel de administracion del OC4J, que usando MBenas ya que este no permitirá cambios dinámicos ya que se tendria que reiniciar el servidor.
Podemos configurar el Pool de conexiones de manera manual editando el descriptor data-source.xml
No hay comentarios:
Publicar un comentario