Conexion con SQL Server

Muchachos,

Tengo un problema con la conexion a una base de datos SQL Server 2005 desde una JSP, en el archivo context.xml se ha configurado para que se puedan realizar hasta 5 conexiones y en la clase utilitaria que realiza las consultas se apertura y cierra la conexion como usualmente se realiza.

El problema radica en que al parecer la conexion no se cierra pues cuando se realiza el envio del sexto comando (select, update o delete) la aplicacion se cae y no se puede continuar.

Alguien tendra la solucion a este caso?

context.xml
=========
<?xml version="1.0" encoding="UTF-8"?>

Clase utilitaria
==========
// ejecuta INS, DEL y UPD
public String ejecuta(String sql) {
String mensaje = null;

try {
Connection cn = getConnection();
if (cn == null) {
mensaje = "No hay acceso a base de datos!";
} else {
Statement st = cn.createStatement();
st.execute(sql);
cn.close();
}
} catch (SQLException e) {
mensaje = e.getMessage();
}

return mensaje; // returna null si todo bien
// Si falla retorna mensaje de error
}

public Connection getConnection() {
try {
Context contexto = new InitialContext();
DataSource fuenteDatos =
(DataSource) contexto.lookup(
"java:comp/env/" + recursoJdbc);

return fuenteDatos.getConnection();

} catch (NamingException e) {
return null;
} catch (SQLException e) {
return null;
}
}

Gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

close()

no siempre cierras la conexión. Si ocurre una excepción solamente obtienes el mensaje y lo devuelves pero ahi ya no cerraste la conexión, se queda abierta. Para que SIEMPRE cierres la conexión tienes que hacer:

 

Pase lo que pase, excepción o no excepción, incluso si ocurre otro tipo de excepción que no estás cachando, el   siempre se va a ejecutar.