Sunday, August 14, 2011

DEMO CONEXIÓN JDNI DESDE UN APLICATIVO JAVA.

Hola en esta oportunidad mostrare otra alternativa de conexión a una BD, al momento de realizar una aplicación J2EE. Es mediante como se le conoce JNDI (Java Naming and Directory Interface). y su Pool de Conexiones.

Al comparara con JDBC podremos decir que JDBC implica que se realice una conexión a la DB por cada golpe a la BD que queramos hacer (CRUP) o un simple Query. Este esquema se repite cada vez:
Abrir conexión => Operación => Cerrar Conexión.

Esta forma de trabajar es perfectamente valida, pero resulta ineficiente, ya que se esta desperdiciando un tiempo en cada conexión y desconexión.
Por otro lado, existe la otra alternativa que es la de crear un Pool de Conexiones, es decir, mantener un conjunto de conexiones que nos deja abierto constantemente un numero de conexiones, las cuales se van tomando mientra el sistema los requiera y cuando no la va a usar la devuelve al Pool, osea desde el aplicativo se le da CLOSE y el Pool lo entiende en realidad que esta dicha conexión LIBRE para brindarla a otro. De esta forma nos ahorramos el consumo de tiempo de conexión y desconexión.

Este manejo es en realidad configuración en los Servidores de Aplicaciones, ya que en realidad la gran mayoría de Servidores de Aplicación dan soporte a: Pool de Conexiones, DataSource, JDNI, etc.

Lo primero es leer sobre la configuración en los servidores de aplicación y aquí hay unos tutoriales paso a paso de cómo realizar dicha configuración en:

1. GLASSFISH - CREACION, CONFIGURACION – JNDI

2. OC4J - CREACION, CONFIGURACION – JNDI

Luego de realizar dicho configuración y validarla desde el servidor de aplicaciones pasaremos al demo del aplicativo que se conectara a dicho Pool de Conexiones.

Cabe resaltar que esto debe haberse configurado previamente en los Servidores de Aplicación como dice el tutorial.
Dentro del web.xml configuraremos:

Parámetros en el contexto de la aplicación, los Servlet que validaran dicha conexión (contendrán los Querys) :

- org.java.servlet.ValidaUsuarioServlet
- org.java.servlet.ReenviaServlet


[!-- *************** PARAMETROS: SERVLETs [COPYRIGTH] *************** --]
[servlet]
[servlet-name]ReenviaServlet[/servlet-name]
[servlet-class]org.java.servlet.ReenviaServlet[/servlet-class]
[init-param]
[param-name]DESCRIPION[/param-name]
[param-value]MANEJO CONEXION JNDI[/param-value]
[/init-param]

[init-param]
[param-name]AUTOR[/param-name]
[param-value]CESAR RICARDO GUERRA ARNAIZ[/param-value]
[/init-param]

[init-param]
[param-name]EMAIL[/param-name]
[param-value]cesarricardo_guerra19@hotmail.com[/param-value]
[/init-param]

[init-param]
[param-name]PAIS[/param-name]
[param-value]PERU[/param-value]
[/init-param]
[/servlet]

[servlet]
[servlet-name]ValidaUsuarioServlet[/servlet-name]
[servlet-class]org.java.servlet.ValidaUsuarioServlet[/servlet-class]
[/servlet]

[servlet-mapping]
[servlet-name]ReenviaServlet[/servlet-name]
[url-pattern]/ReenviaServlet[/url-pattern]
[/servlet-mapping]

[servlet-mapping]
[servlet-name]ValidaUsuarioServlet[/servlet-name]
[url-pattern]/ValidaUsuarioServlet[/url-pattern]
[/servlet-mapping]


También, registraremos el parámetro que indicara el Motor de datos a usarse (Tiene que estar de la mano con el JDBC.properties ).


[!-- ************** PARAMETROS: [DATA-SOURCE] ************** --]
[context-param]
[description]Tipo de BD a la cual se conectara la aplicacion[/description]
[param-name]motor_db_usado[/param-name]
[param-value]2[/param-value]
[/context-param]


Existe el directorio: org.java.conexion, que esta encargado como su nombre lo dice exclusivamente para la conexión. Dentro de el existen lo siguiente:

- AccesoProperties.java = Clase para el acceso al JDBC.properties
- ConexionJNDI.java = Clase que administra el pool de conexiones
- ConstantesJNDI.java = Clase de Constantes exclusivas para la conexión.
- jdbc.properties = Archivo de configuración de los motores de datos y JDBC.
- 1=MySQL.
- 2=Oracle.


En si lo IMPORTANTE aquí al momento de hacer el amarre de la clase conexión con la configuración de Pool de Conexiónes, es saber
El nombre del Pool registrado en dicho Servidor de Aplicaciones en mi caso lo tengo asi:

-Para MySQL: jdbc/__MySQLPool
-Para ORACLE: jdbc/__ORACLEPool

Ahora solo queda la parte de la capa Vista. Que es en si un LOGIN, que validara los datos ingresados contra los existentes en la BD. Dicho Script lo obtienen de la ruta:

Resources/DataBase:

Script_BD_MySql.sql
Script_BD_ORACLE.sql


El login es:

- Usuario: rguerra
- Password: admin.


Si la validación es correcta mostrara datos del usuario logueado y sino mostrara simplemente un error:
ÉRROR EN AUTENTICACIÓN
.

Para descargar el ejemplo completo descargarlo de:AQUÌ.