Ir al contenido principal

Tomcat Datasource


A veces entregamos una aplicación la cual contiene la información de la conexión a la base de datos dentro de una clase, en caso de que esta aplicación sea WEB la lectura de un archivo nos complica más las cosas.

Para esto es posible dejar a Apache Tomcat administrar la conexión y que nuestra aplicación sea independiente de los datos de conexión e incluso del motor de la base de datos.

A esto se le puede llamar, Datasource en el contexto de Tomcat, esto reemplaza crear un método que nos retorne una instancia de Connection del paquete sql y nos independiza de la configuración, es este caso lo presentare para ser configurado con MS Sql Server 2008.

El procedimiento es el siguiente:

1.- Asegurate de que SQL Server sea accesible desde una red, que su identificación sea mixta, inicio de windows y datos (usuario y contraseña).

2.- Tener los driver de JDBC de SQL Server (sqljdbc4.jar) y por si acaso (log4j-1.2.15.jar) o superior, estos archivos deben ser copiados a la carpeta /lib del directorio de Tomcat.

3.- Modificar o crear el archivo context.xml que esta en conf de Tomcat.


<?xml version="1.0" encoding="UTF-8"?>
<context >
<Resource name="jdbc/SqlServerTest" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="USUARIO" password="CONTRASEÑA" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databaseName=NOMBRE_DB" />
</context>

encaso de ocurrir errores al final de todos estos pasos o estar ejecutando la aplicación desde Eclipse sera necesario creer el archivo context.xml en nuestroProyecto\WebContent\META-INF\

4.- Modificar el archivo web.xml en conf de Tomcat agregar lo siguiente justo antes de cerrar la equiqueta </web-app>



<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/SqlServerTest </res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


5.- Implementar esto en JAVA.

[java]
import java.io.File;
import java.net.InetAddress;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
* @author Pedro Carrasco
*/
public class Conexion {

private static Connection getContextConnection(){
Context ctx;
try {
ctx = new InitialContext();
Context envctx = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envctx.lookup("jdbc/SqlServerTest");
Connection conn = ds.getConnection();
return conn;
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

public static void main(String[] args) {
Connection connetion = getContextConnection();
if( connetion != null ){
System.out.println("Funciona !!!");
}
}

}
[/java]

6.- Probar, una vez configurado los datos en los archivos xml y la clase Conexion.java compilada, esta debiera decir "Funciona!!!"


Comentarios

Entradas populares de este blog

Base de Datos Comunas de Chile

Buenas, hace tiempo que no aportaba al blog, hoy les traigo una herramienta de utilidad publica, es la Base de Datos actualizada de las comunas, provincias y regiones de nuestra angosta faja de tierra, Chile.
Esta en formato PostgreSQL actualizada a septiembre del 2011 (no se han realizado nuevos cambios desde entonces)

Los códigos son los oficiales según http://www.subdere.cl/documentacion/regiones-provincias-y-comunas-de-chile (Subsecretaría de Desarrollo Regional y Administrativo)
La distribución es la siguiente: Comunas 346 registros. Provincia 54 registros. Región 15 registros.
Para descargar el script sql lo puedes hacer desde aquí (public gist de github)
Saludos.

Certificación Java 7: Temas I

Oracle Certified Associate, Java SE 7 Programmer Dentro del programa de certificación, por el momento presenta 2 hitos de certificación principales estos son:
Oracle Certified Associate, Java SE 7 ProgrammerOracle Certified Professional, Java SE 7 Programmer este articulo solo detallara el contenido del primer examen para obtener el 1er hito, este examen es el 1Z0-803, pueden obtener más información en lapágina oficial. Java SE 7 Programmer I (1Z0-803)1.- Java Basics
Define the scope of variablesDefine the structure of a Java classCreate executable Java applications with a main methodImport other Java packages to make them accessible in your code
2.- Working With Java Data Types
Declare and initialize variablesDifferentiate between object reference variables and primitive variablesRead or write to object fieldsExplain an object's lifecycleCall methods on objectsManipulate data using the StringBuilder class and its methodsCreate and manipulate strings
3.- Using Operators and Dec…

Creación de Business Service en Oracle Service Bus (DBAdapter)