sábado, noviembre 30, 2013

Crear Pool Conexión en Tomcat para Oracle , Mysql

Pues bien esta vez esta vez voy a mostrar cómo realizar la configuración para generar pool de conexión para Oracle y otro para MySql en tomcat, pues bien menos escribir y mas imágenes que muestren como se hace esto:


Para mi caso tengo en eclipse Tomcat 7.0.42 previamente colocado en el apartado de servidores como el la imagen siguiente:




Como ya se sabe cuando se coloca un nuevo servidor, eclipse genera una serie de carpetas que contienen la configuración de dicho servidor tal como se ve en la imagen siguiente:


Voy a configurar los pool’s de conexión en el archivo context.xml agregando la siguientes líneas:

<!-- Pool de conexion para Oracle -->
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@15.128.1.69:1526:BNT03D"
username="monitoreo" password="#monitor1" maxActive="20" maxIdle="10"
maxWait="-1"/>
<!-- Pool de conexion para Mysql -->
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1/MyDataBase"/>

Una vez que agrego estas líneas debo tener en mi carpeta lib de tomcat los .jar siguientes:

ojdbc14.jar-- este es para Oracle
jdbc-mysql-- este es para Mysql


Y listo tenemos preparados los pool’s para crear las conexiones.

Vamos hacer el proyecto web para ver el funcionamiento:


Generamos un proyecto web nuevo llamado PoolConexiones


Generamos el paquete com.elkardumen.servlet.

Dentro del paquete generamos el servlet TestConexiones.java

Colocamos el código siguiente:
package com.elkardumen.servlet;

import java.io.IOException;
import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;


/**
* Servlet implementation class TestConexiones
*/
@WebServlet(description = "Tester de Conexiones Pools", urlPatterns = { "/TestConexiones" })
public class TestConexiones extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TestConexiones() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
System.out.println("Oracle>>>"+conn+""+conn.isClosed());
Context initContextMySql = new InitialContext();
Context envContextMySql = (Context)initContextMySql.lookup("java:/comp/env");
DataSource dsMySql = (DataSource)envContextMySql.lookup("jdbc/mysql");
Connection connMySql = dsMySql.getConnection();
System.out.println("MySql>>>"+connMySql+""+connMySql.isClosed());
}catch(Exception e){
e.printStackTrace();
}
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

}


Ahora es importante que se tenga la referencia de los pools que se van a utilizar,en el archivo web.xml es necesario colocar el siguiente configuración.


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>PoolConexiones</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<servlet>
<description></description>
<display-name>Conexion</display-name>
<servlet-name>Conexion</servlet-name>
<servlet-class>com.elkardumen.servlet.TestConexiones</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Conexion</servlet-name>
<url-pattern>/Conexion</url-pattern>
</servlet-mapping>
</web-app>
Una vez que se coloco entonces solo queda deployar el proyecto como de costumbre, click derecho->Run As ->Run on Server

Ya que deployo en nuestro navegador colocamos la ruta

ojo con el puerto , 8042 es el que yo configure , si ustedes no han configurado el puerto lo mas probable es que sea 8080.

Si todo sale bien entonces se mostrara en la consola algo como lo que sigue:


Listo coloco el proyecto web asi como los libs que utilice para que sean utilizados en cualquier momento



Saludos



2 comentarios:

  1. Y que ni un solo comentario.... por lo menos uno para decirme que estoy mal o bien, o que funciono o no... No estaría nada mal que por lo menos un Saludo :)

    ResponderEliminar