Este tutorial es para explicar como configurar un pool de conexiones con GlassFish que funcione con el motor de base de datos de Oracle.
Para comenzar necesitamos Descargar el driver de Oracle llamado "ojdbc6.jar" el cual puede ser descargado de aquí
una vez que lo tenemos descargado procederemos a copiarlo en uno de los siguientes directorios dependiendo de donde esta instalado GlassFish
/usr/local/glassfish-3.1.2/glassfish/domains/domain1/lib/ext o
/home/usuario/glassfish-3.1.2/glassfish/domains/domain1/lib/ext
(reemplazar donde dice usuario por su usuario Linux).
una vez que hemos copiado el archivo ojdbc6.jar en el directorio indicado procederemos a darle permisos de ejecución, para realizar esta acción tenemos dos posibilidades, hacerlo a través de la terminal o por medio de la interfaz gráfica.
para cambiar los permisos a través de la interfaz gráfica seleccionamos el archivo ojdbc6.jar le hacemos click derecho y vamos a la pestaña permisos y ahí activamos la opción "permitir ejecutar el archivo como un programa"
Para dar permisos de ejecución desde la terminal digitamos el siguiente comando chmod +x ojdbc6.jar
despues de tener ubicado el archivo ojdbc.jar en el directorio y haberle asignado el permiso de ejecución procederemos a iniciar GlassFish, para este proceso abrimos la terminal de Linux y nos situamos en alguno de estos dos directorios:
/usr/local/glassfish-3.1.2/glassfish/bin o /home/usuario/glassfish-3.1.2/glassfish/bin (reemplazar donde dice usuario por su usuario Linux) y ejecutamos el siguiente comando ./asadmin start-domain domain1 con esto tendremos GlassFish corriendo en nuestro equipo.
ahora debemos abrir nuestro navegador web e ir a la siguiente URL: localhost:8080
en este punto debemos abrir el enlace que dice "go to the administration console" que nos llevara a la pagina de configuración de GlassFish situada en localhost:4848
cuando estemos en la pagina de configuracion de GlassFish buscamos en el menu de la izquierda la opcion JDBC y hacemos docle click sobre la opcion Pool de conexiones jdbc
una vez abierto pulsamos en el botón Nuevo el cual nos abrirá el paso 1 de configuración del pool de conexiones, en este paso debemos llenar los siguientes valores:
Nombre de pool : aquí debemos ponerle un nombre a nuestro pool de conexiones.
Tipo de recurso : aqui seleccionamos el recurso con el cual ocuparemos mas tarde el pool de conexiones, pero en este caso en especial ocuparemos el javax.sql.ConnectionPoolDataSource.
Proveedor de controlador de base de datos : en esta opción seleccionamos obviamente Oracle que es nuestro motor de base de datos.
el resto de opciones se dejan con su valor predeterminado
ahora apretamos el Botón siguiente el cual nos llevara al paso dos de la configuración.
en este punto del paso 2 deberemos asignarle valores a los siguientes opciones
Tamaño de pool inicial y mínimo: aquí debemos colocar la cantidad mínima de conexiones que queremos que maneje nuestro pool.
Tamaño de pool máximo: aquí debemos colocar la cantidad máxima de conexiones que queremos que maneje nuestro pool.
Cantidad de cambio de tamaño de pool : aquí debemos especificar el numero de conexiones que serán eliminadas cuando cambien acabe el TimeOut de inactividad del pool.
TimeOut de inactividad: esta es la cantidad de segundos que una conexión puede estar inactiva.
Tiempo de espera máximo: este es el tiempo máximo de espera de una conexiona antes de que se envié un mensaje de TimeOut de conexión.
DataBaseName: aqui debemos especificar el nombre de nuestra base de datos en el caso de que tengamos instalada la version express de oracle la base de datos designada se llama XE.
DataSourceName: OracleConnectionPoolDataSource.
ExplicitCachingEnable: para nuestro caso lo dejaremos en false.
ImplicitCachingEnable: para nuestro caso lo dejaremos en false.
LoginTimeOut: lo dejaremos por defecto en 0.
MaxStatements: lo dejaremos por defecto en 0.
NetworkProtocol: aquí especificamos el protocolo de red con el que funcionara el pool en nuestro caso tcp.
Password: clave de la base de datos.
PortNumber: puerto por el que se realizara la conexión en el caso de Oracle por defecto es el puerto 1521.
URL: en esta url se debe especificar la ip del servidor donde se encuentra la base de datos, el puerto de la conexión y el nombre de la base de datos para nuestro caso queda algo así jdbc:oracle:thin@localhost:1521:XE.
User: usuario de la base de datos.
una vez configuradas todas la opciones le damos al boton finalizar y ya tendremos creado nuestro pool de conexiones ahora si queremos probar si esta funcionando podemos hacerle un ping para ver si responde.
si el ping se realiza correctamente ya tenemos nuestro pool de conexiones configurado y listo pero antes de usarlo necesitamos crear un resource que haga uso de nuestro pool para eso vamos a recursos jdbc y creamos un nuevo recurso le ponemos un nombre y seleccionamos que pool de conexiones queremos que ocupe.
ahora dejamos un código de un jsp en el cual se prueba la conexión con el pool
ahora con esto podemos ocupar nuestro pool de conexiones en cualquier aplicacion con la que necesitemos ocupar la base de datos
<%@page import="javax.naming.Context"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Data in my Connection Pooled Database</h1>
<br>
<%
try {
Context ctx = new InitialContext();
//The JDBC Data source that we just created
DataSource ds = (DataSource) ctx.lookup("ConexionPoolAplicacionesEmpresariales");
Connection connection = ds.getConnection();
if (connection == null) {
throw new SQLException("Error establishing connection!");
}
String query = "SELECT * FROM persona";
PreparedStatement statement = connection.prepareStatement(query);
ResultSet rs = statement.executeQuery();
while (rs.next()) {
out.print(rs.getString("nombre"));
}
} catch (SQLException e) {
System.out.print("SQL excepcion");
}
%>
</body>
</html>
ahora dejamos un código de un jsp en el cual se prueba la conexión con el pool
ahora con esto podemos ocupar nuestro pool de conexiones en cualquier aplicacion con la que necesitemos ocupar la base de datos
<%@page import="javax.naming.Context"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Data in my Connection Pooled Database</h1>
<br>
<%
try {
Context ctx = new InitialContext();
//The JDBC Data source that we just created
DataSource ds = (DataSource) ctx.lookup("ConexionPoolAplicacionesEmpresariales");
Connection connection = ds.getConnection();
if (connection == null) {
throw new SQLException("Error establishing connection!");
}
String query = "SELECT * FROM persona";
PreparedStatement statement = connection.prepareStatement(query);
ResultSet rs = statement.executeQuery();
while (rs.next()) {
out.print(rs.getString("nombre"));
}
} catch (SQLException e) {
System.out.print("SQL excepcion");
}
%>
</body>
</html>
-Rodrigo Bermedo Soto
-Jaime Galeano Bastidas
-Enrique Ketterer Ortiz