Java - Pool Conexiones DBCP -no funciona

   
Vista:

Pool Conexiones DBCP -no funciona

Publicado por Diana (1 intervención) el 10/06/2013 16:03:04
Buenas,
Soy nueva en el foro, pero les pido que me ayuden!!, Hace unos añitos ya, realice una aplicación pero resulta que comenzó a fallar por el número de conexiones, así que decidí usar el pool de conexiones dbcp, la clase compila bien pero al momento de correr mi programa en el tomcat 6, estoy programando en jsp,no me genera error pero no me muestra la consulta, yo tenía una clase de conexión anterior que no usaba pool pero me funcionaba y consultaba correctamente, no se que este haciendo mal, esta es la clase:


package prueba;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;




/**
* Ejemplo simple de uso de BasicDataSource.
*
* @author Chuidiang
*/
public class BaseDatos{

/**
* @param args
*/
protected ResultSet rs;

/** Pool de conexiones */
private DataSource dataSource;

public Connection conexion = null;
/**
* Inicializa el pool de conexiones BasicDataSource y realiza una insercion
* y una consulta
*/
public BaseDatos() {


inicializaDataSource();

}

/**
* Inicializacion de BasicDataSource
*/
private void inicializaDataSource() {


BasicDataSource basicDataSource = new BasicDataSource();

basicDataSource.setDriverClassName("org.postgresql.Driver");
basicDataSource.setUsername("postgres");
basicDataSource.setPassword("54");
basicDataSource.setUrl("jdbc:postgresql://localhost:5432/prueba");

// Opcional. Sentencia SQL que le puede servir a BasicDataSource
// para comprobar que la conexion es correcta.
System.out.println("Validar conexion");
basicDataSource.setValidationQuery("select 1");

dataSource = basicDataSource;
}

/**
* Realiza una insercion, pidiendo una conexion al dataSource y cerrandola
* inmediatamente despues, para liberarla.
*/
public boolean insertar(String inser) throws Exception {
System.out.println("Sentencia que llega Insertar: "+inser);
Connection conexion = null;
boolean s=false;

try {
// BasicDataSource nos reserva una conexion y nos la devuelve.
System.out.println("Entro a insertar, antes del getConnection");
//conexion = dataSource.getConnection();
conexion=this.dbc();
System.out.println("Conexión del Método Insertar"+conexion);

if(conexion!=null){
// La insercion.
Statement ps = conexion.createStatement();
ps.executeUpdate(inser);
s=true;

}
else{
s=false;
}



} catch (SQLException e) {
e.printStackTrace();
} finally {
liberaConexion(conexion);

}

return s;
}

/**
* Cierra la conexion. Al provenir de BasicDataSource, en realidad no se
* esta cerrando. La llamada a close() le indica al BasicDataSource que
* hemos terminado con dicha conexion y que puede asignarsela a otro que la
* pida.
*
* @param conexion
*/
private void liberaConexion(Connection conexion) {
try {
if (null != conexion) {
// En realidad no cierra, solo libera la conexion.
conexion.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
//metodos
public Connection dbc(){
Connection connection=null;

try {
InitialContext initialContext = new InitialContext();
Context context = (Context)initialContext.lookup("java:comp/env");
//The JDBC Data source that we just created
DataSource ds = (DataSource) context.lookup("jdbc/postgres");
connection = ds.getConnection();

}

catch (Exception e) {
e.printStackTrace();
}
return connection;
}



private DataSource getJdbcMiData() throws Exception{
Context c=new InitialContext();
return (DataSource)c.lookup("java:comp/env/jdbc/postgres");
}
/**
* Realiza una consulta a la base de datos y muestra los resultados en
* pantalla.
*/
public ResultSet consultar(String consu)throws Exception{
System.out.println("Sentencia que llega Consultar: "+consu);

try {
//System.out.println("Entro a consultar, antes del getConnection");
//conexion=this.dbc();segundo
//conexion = dataSource.getConnection();primero
conexion=this.getJdbcMiData().getConnection();
System.out.println("Conexión del Método Consultar"+conexion);
Statement sentencia = conexion.createStatement();
rs= sentencia.executeQuery(consu);

if(rs.next()){System.out.println("El resulset esta lleno");}


} catch (SQLException e) {
e.printStackTrace();
} finally {
// En el finally, para asegurar que se ejecuta, se cierra la
// conexion.
liberaConexion(conexion);
}
System.out.println("ResultSet"+rs);
return rs;
}

public boolean validar(String consul)throws Exception{

boolean sesion=false;
Connection conexion = null;
try {
System.out.println("Entro a validar, antes del getConnection");
//conexion = dataSource.getConnection();
conexion=this.dbc();
System.out.println("Conexión del Método Validar"+conexion);
Statement sentencia = conexion.createStatement();
rs= sentencia.executeQuery(consul);

if(rs.next())sesion=true;

} catch (SQLException e) {
e.printStackTrace();
} finally {
// En el finally, para asegurar que se ejecuta, se cierra la
// conexion.
liberaConexion(conexion);
}
return sesion;

}

}

Espero me puedan ayudar! :( Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder