style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Realizar una prueba especifica a un pool conection DBCP

Hola a todos,
pregunte lo mismo en otro tema pero como estaba algo escondido no he tenido respuesta.
Estoy un poco desorientada con esto de los pool conections ya que es primera vez que implemento uno,
y mi inquietud es que quiero tumbar la base de datos o botar la red y mostrar a traves de un ciclo cuantas conexiones se hicieron hasta ese momento y mostrar ese numero (probe un for pero no me resulto), mas que nada para saber si continuan funcionando las conexiones, ya que se podria dar el caso de que se sigan reciviendo conexiones.
por ejemplo si tengo una simple implementacion de una clase q implementa una consulta a traves de un pool como esta:

public class QuerySimple{

    private DataSource dataSource=null;
       
    public void setDataSource (DataSource dataSource) {
        this.dataSource = dataSource;
        }

        public void Consulta () {      
                Connection conexion = null;
                try {
                    conexion = dataSource.getConnection();    
                    Statement sentencia = conexion.createStatement();

 /*********   Por ejemplo aqui necesito conocer la efectividad del pool si tumbo la base de datos o se me cae la red"*************/

                    ResultSet resultado = sentencia.executeQuery("SELECT algo FROM unaTabla");

                    }  
                }
                catch (Exception e) {
                 e.printStackTrace();
                }
                finally {
                   if (null != conexion)
                         conexion.close();
           }
        }
       
        public static void main(String[] args) {
                new QuerySimple();
            }

}

mencionaba tambien que hay un atributo llamado Pool State pero no se como implementarlo,
no es que este desesperada pero no me agrada cuando no me funciona un codigo :/
cualquier sugerencia sera bienvenida :)

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

no entiendo

No te contesté en el otro foro porque no entiendo tu pregunta. Antes que vayas a spamearnos con otros 50 posts iguales: explica eso del pool state, dónde lo leíste o qué, porque no tengo la menor idea de lo que hablas.

Y creo que realmente no quieres implementar un pool de conexiones, sino usar uno. Implementar uno es que lo vayas a escribir tú; usar uno es tomar uno existente e integrarlo en tu aplicación. Si vas a usar un pool de conexiones, por qué necesitas implementar el dichoso "pool state"? qué se supone que es?

Imagen de ArenasMx

imagino

yo creo que quiere saber cuantas peticiones al pool tienen en cola por así decirlo y en el dado caso que se caiga el servidor de base de datos, tratar de saber cuantas conexión estaban activas, cuantas estaba transmitiendo mas o menos para saber donde se queda..... algo así como un "resume" para los datos :S imagino claro esta,

ademas a tu pool de conexiones no le falta los datos del servidor usuario contraseña y puerto ????

eso es a grandes rasgos lo

lo q dice "imagino" es a grandes rasgos lo que quiero hacer, intento ocupar la variable dataSource para eso en un ciclo pero no me funciona,
los demas datos del servidor, usuario, contraseña, etc, los tengo en otra clase q carga el pool con esos datos y los envia a otras clases para realizar inserciones, consultas, etc.
Existirá algun metodo especifico para mostrar el numero de conexiones que se realizan?? y ademas otros datos de dichas conexiones?

y disculpen pero mi intencion no era spamear en el foro xD

Imagen de ezamudio

sí hay

pero son específicos del pool que uses, no son parte de la interfaz DataSource. Así que tienes que hacer cast a la clase específica de pool que estás usando para pedirle las propiedades que necesitas y sabes que van a variar de un pool a otro, no hay algo genérico o estándar para los datos que quieres ver.

Imagen de ArenasMx

implementación

bueno bueno una solución un poco mas sencilla es hacer un contador algo mas rudimentario que no requiera hacer un cast como por ejemplo con contador para cada peticion que se le hace al datasource, y que disminuya conforme va liberando una conexion o termina la consulta de la base de datos, y pues del lado de una transmision incompleta puedes usar tablas transaccionales en la que necesitas un comit para poder "escribir" los datos sobre una o varias tablas en especifico... y pues los "datos de dichas conexiones" pues tienes que ser mas especifico que tipo de datos quieres obtener... por lo que veo creo que vas a tener que hacerlo a mano...
suerte

entrometiendome en este

entrometiendome en este threads quisiera preguntarle a ArenasMx como se haria eso que el dice, el contador lo pongo en un while, pero qué variable del pool ocuparia para saber el numero de conexiones q se estan realizando?
no tienes un pseudocodigo como para explicarlo mejor? ya q yo tambien estoy interesado en este tema de los pool de conexiones y quiero aprender mas y mas.

Imagen de ezamudio

DBCP

BasicDataSource tiene algunas propiedades como numActive que te indica el número de conexiones activas (prestadas a procesos) en el momento en que la consultas. También tiene numIdle, que te dice cuántas quedan en el pool en ese momento. Eso lo puedes comparar con maxIdle y maxActive, que deben haber sido configurados previamente.

DBCP Connection Pool con 2 bases de datos distintas

Tengo una aplicacion en la que necesito crear 2 pool de conexiones, uno hacia una base de datos local y otra a una base de datos remota, con DBCP no he podido ya que el pool que crea es estatico y unico, necesito ayuda con este tema si alguien le toco hacer algo asi o si tienen idea de como hacerlo, saludos

Imagen de ezamudio

DBCP

Con DBCP por supuesto que puedes crear todos los pools que quieras. Haces una instancia de BasicDataSource para cada base de datos a donde te quieras conectar y eso es todo. Yo tengo aplicaciones con dos pools a dos bases de datos distintas, usando DBCP, y no he tenido ningun problema. Eso de que DBCP crea un pool estático y único es completamente falso.

DBCP Connection Pool con 2 bases de datos distintas

es mi error, es que creaba el datasource usando BasicDataSourceFactory, voy a probarlo como dices, y comento

Editado: efectivamente, tienes razon, muchas gracias por la ayuda!

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">