Cierre de Pool de conexiones
Hola,
En mi aplicación estoy utilizando las clases de Oracle para implementar un Pool de conexiones de con la siguiente clase:
**
* Precarga de los Pool de conexiones en la primera solicitud de conexión de cada perfil/rol.
*
*
*/
package seguridad;
import java.io.*; // Serializable
import java.util.*;
import java.sql.*;
import javax.sql.*; // PoolConnections
import oracle.jdbc.*;
import oracle.jdbc.pool.*;
/**
* Crea y gestiona los pools de conexiones contra Oracle
*/
public class ConexionPoolBean implements Serializable
{
Vector conexiones;
private final String usr_con = "USR_CON_SITRAP";
private final String clv_con = "xxx";
private String urlBBDD = "";
private OracleConnectionPoolDataSource ds_con;
private PooledConnection pool_con;
public ConexionPoolBean() {
ds_con = null;
pool_con = null;
}
public void crearPool( String bbdd) throws Exception {
urlBBDD = bbdd;
if (pool_con == null)
{
initFuentes(); // Creacción de las fuentes de datos
pool_con = ds_con.getPooledConnection();
}
}
// Invocado en la salida de la app
public void destruirPool() throws Exception {
// Si no ha conexiones activas
if (pool_con==null) {
pool_con.close();
}
}
public synchronized Connection getConexion(String tipo) {
Connection con = null;
try {
if (tipo.equals("CON")) con = (Connection) pool_con.getConnection();
else con = null;;
} catch(SQLException sqle) {}
catch(Exception e) {}
return con;
}
public synchronized void devolverConexion(Connection c) {
try {
c.close();
} catch(SQLException sqle) {}
}
public PooledConnection getPool_con(){ return pool_con; }
public void setPool_con(PooledConnection p){ pool_con = p; }
private void initFuentes(){
try {
ds_con = new OracleConnectionPoolDataSource();
ds_con.setURL(urlBBDD);
ds_con.setUser(usr_con);
ds_con.setPassword(clv_con);
} catch(SQLException sqle) {}
}
}
¿Hay alguna forma de cerrar el pool de conexiones (destruirPool) cuando el ultimo usuario que usa el aplicativo salga de la misma?
¿Con que evento podria detectarlo y así lanzar el cierre de los pools?
Gracias y un saludo,
En mi aplicación estoy utilizando las clases de Oracle para implementar un Pool de conexiones de con la siguiente clase:
**
* Precarga de los Pool de conexiones en la primera solicitud de conexión de cada perfil/rol.
*
*
*/
package seguridad;
import java.io.*; // Serializable
import java.util.*;
import java.sql.*;
import javax.sql.*; // PoolConnections
import oracle.jdbc.*;
import oracle.jdbc.pool.*;
/**
* Crea y gestiona los pools de conexiones contra Oracle
*/
public class ConexionPoolBean implements Serializable
{
Vector conexiones;
private final String usr_con = "USR_CON_SITRAP";
private final String clv_con = "xxx";
private String urlBBDD = "";
private OracleConnectionPoolDataSource ds_con;
private PooledConnection pool_con;
public ConexionPoolBean() {
ds_con = null;
pool_con = null;
}
public void crearPool( String bbdd) throws Exception {
urlBBDD = bbdd;
if (pool_con == null)
{
initFuentes(); // Creacción de las fuentes de datos
pool_con = ds_con.getPooledConnection();
}
}
// Invocado en la salida de la app
public void destruirPool() throws Exception {
// Si no ha conexiones activas
if (pool_con==null) {
pool_con.close();
}
}
public synchronized Connection getConexion(String tipo) {
Connection con = null;
try {
if (tipo.equals("CON")) con = (Connection) pool_con.getConnection();
else con = null;;
} catch(SQLException sqle) {}
catch(Exception e) {}
return con;
}
public synchronized void devolverConexion(Connection c) {
try {
c.close();
} catch(SQLException sqle) {}
}
public PooledConnection getPool_con(){ return pool_con; }
public void setPool_con(PooledConnection p){ pool_con = p; }
private void initFuentes(){
try {
ds_con = new OracleConnectionPoolDataSource();
ds_con.setURL(urlBBDD);
ds_con.setUser(usr_con);
ds_con.setPassword(clv_con);
} catch(SQLException sqle) {}
}
}
¿Hay alguna forma de cerrar el pool de conexiones (destruirPool) cuando el ultimo usuario que usa el aplicativo salga de la misma?
¿Con que evento podria detectarlo y así lanzar el cierre de los pools?
Gracias y un saludo,
