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
- Inicie sesión o regístrese para enviar comentarios
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.