Tutorial para la creación de un pool de conexiones con oracle en Linux.
Autor: Cristian Lara
Trabajo: Bonus Point nº8.
Curso: Introducción al desarrollo de aplicaciones empresariales.
Profesor: Cristian Ortiz.
Como tenemos exportado el ojdbc6.jar ( Debemos tenerlo par
a correr nuestro servidor de aplicaciones glassfish )
Nos vamos a la siguiente direccion por la terminal:
- /usr/local/glassfish-3.1.2/glassfish/domains/domain1/lib/ext
Ahora copiamos el ojdbc6
en la direccion, pero primero le damos los permisos, esto lo podemos hacer de la siguiente manera:
- chmod 777 /home/<usuario>/desktop/ojdbc6.jar
- cp /home/<usuario>/desktop/ojdb6.jar
- locate "lib/ext"
Paso3: Ahora nos dirigimos a donde dice "go to the Administration Console", que en español se leeria "ir a la administracion de la consola". Estando dentro nos dirijimos a "Recursos", luego a "JDBC" para luego ir a "Pool de conexiones". Desde Ahora en adelante comenzaremos a crear nuestro Pool de conexiones en Oracle.
Paso4: Ya estando en Pool de Conexiones, veremos algunos ya creados por default, pero nosotros queremos crear nuestro propio pool, con nuestros parametros y nuestras caracteristicas por lo tanto nos vamos a nuevo o new.
Paso5: Ahora como nos damos cuenta, comienza la creacion del nuevo pool de conexiones. Para empezar, Colocamos el nombre que le queremos dar a nuestro pool de conexiones. Para nuestro caso le pondremos "EjemploPool", y luego en la parte posterior(Tipo de recurso) seleccionamos la opcion de "javax.sql.ConnectionPoolDataSource" y abajo en "Proveedor de base de datos", la base de datos que vamos a utilizar, para esta ocacion seria "Oracle"(Recordemos que las casillas que no nombramos deben quedar default) y luego presionamos siguiente.
Paso6: Al apretar siguiente nos saldra varios campos. Primero, La configuracion general, la cual ya realizamos al principio, por ende no debemos cambiar nada. Mas abajo, nos encontramos con la configuracion de pool y es aquí donde debemos comenzar a editar la configuracion.
- En tamaño Inicial y minimo designamos la cantidad minimi e inicial de conexiones. Este valor puede ser decidido por ustedes pero lo recomendado son 2.
- Luego tamaño del pool maximo. Esto corresponde al valor maximo de conexiones que puede sostener nuestro pool, como la configuracion que estamo haciendo es basica, recomendamos 8.
- Ahora nos encontramos con la cantidad de cambio de tamaño de pool. Esto corresponde a cuantas conexiones se van a eliminar cuando el timeout de inactividad del pool caduque. Recomendado 2
- Timeout de inactividad. Tiempo que una conexion puede mantener sin actividad en el pool. recomendado 300
- Tiempo maximo de espera. Tiempo maximo que se espera para la conexion, antes que se envie un mensaje de timeout. Recomendado 10000.
Terminando con esta parte nos metemos a la "Transaccion". Aqui comenzaremos a editar sobre las "Propiedades adicionales".
Debemos tener lo siguiente:
Nombre Valor
ExplicitCachingEnable false
MaxStatements 0
ImplicitCachingEnable false
LoginTimeOut 0
URL jdbc.oracle:thin:@localhost:1521:XE
(Donde localhost es la ip del ordenador a conectar. 1521 donde configuramos nuestra base de datos y XE el nombre de la base de datos)
PortNumber 1521 (Puerto de oracle)
DataBaseName XE (Nombre de la base de datos)
DataSourceName OracleConnectionPoolDataSource
NetworkProtocol tcp
ServerName Oracle
User ejemplo (Nombre del usuario de la base de datos)
Password ejemplo123 (Password de la base de datos)
...y presionamos Finalizar (Recordemos que si las propiedades no se encuentran, presionamos agregar propiedad y listo).
Codigo Java para conectarse al Pool:
1 <%@page import="java.sql.Connection"%>
2 <%@page import="java.sql.ResultSet"%>
3 <%@page import="java.sql.PreparedStatement"%>
4 <%@page import="javax.naming.NamingException"%>
5 <%@page import="java.sql.SQLException"%>
6 <%@page import="javax.sql.DataSource"%>
7 <%@page import="javax.naming.InitialContext"%>
8 <%@page import="javax.naming.Context"%>
9 <%@page contentType="text/html" pageEncoding="UTF-8"%>
10 <!DOCTYPE html>
11 <html>
12 <head>
13 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
14 <title>No molestar, estoy el pool !!!</title>
15 </head>
16 <body>
17 <h1>Estoy en Pool!</h1>
18 <%
19 Connection connection = null; // objeto conexion
20
21 try {
22 System.out.println("\n\n\n\n ------------");
23 Context ctx = new InitialContext(); // interfaz representa un contexto de nomenclatura,
24 DataSource ds = (DataSource) ctx.lookup("jdbc/ejemplo"); // definimos el pool de conexiones a utilizar
25
26 System.out.println("------------ \n\n\n\n ");
27 connection = ds.getConnection(); // obtenemos la conexion a traves de un pool de conexiones
28
29 if (connection == null) {
30 out.print("<p>Conexion es null</p>");
31 }
32
33 // A continuacion se muestra una consulta normal a la base de datos
34 String query = "SELECT * FROM palabra";
35 PreparedStatement statement = connection.prepareStatement(query);
36 ResultSet rs = statement.executeQuery();
37 while (rs.next()) {
38 out.print(rs.getString(2) + "<br>"); // visualizar la columna 2 del ResultSet.
39 }
40 } catch (NamingException ex) {
41 System.out.println("Error NamingException: " + ex.getMessage());
42 } catch (SQLException ex) {
43 System.out.println("Error SQLException: " + ex.getMessage());
44 }
45 %>
46
47
48 </body>
49 </html>
50