El problema es que al hacer pruebas de estrés observo que lanza más conexiones de las que están configuradas en el pool y las mantiene abiertas mucho tiempo sin liberarlas. Parece como si no respetara el tamaño del pool.
He hecho de todo y no sé por qué está pasando esto. Si podéis ayudarme os lo agradecería.
El contenido de mi context.xml es el siguiente:
Código:
He bajado los valores de maxActive y maxIdle para hacer las pruebas. Inicialmente eran 100 y 30.<Context path="/test" docBase="test" debug="0" reloadable="true" > <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource" maxActive="2" maxIdle="1" maxWait="10000" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" username="test" password="test" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.1.109:1521:GLOBALDB" /> </Context>
La forma de crear la conexión es esta:
Código:
El código que cierra las conexiones, que está puesto al final del jsp principal, es el siguiente:<% Context initCtx = new InitialContext(); Context ctx = (Context) initCtx.lookup("java:/comp/env"); DataSource fuenteDatos = (DataSource) ctx.lookup("/jdbc/test"); con = fuenteDatos.getConnection(); s = con.createStatement(); %>
Código:
Si me pudierais decir lo que pasa os lo agradecería un montón. Ya no sé qué más hacer.<%-- Cerrar las conexiones --%><% } catch(Exception e) { // Tratar la excepción } finally { try { if(r != null) r.close(); } catch(Exception e) { // Tratar la excepción } try { if(s != null) s.close(); } catch(Exception e) { // Tratar la excepción } try { if(con != null) con.close(); } catch(Exception e) { // Tratar la excepción } }
Muchas gracias y saludos a todos.