Hola, tengo un problema con las conecciones al base de datos.
(voy a poner toda la cantidad de info)
Primero, estoy ocupando DataSources, para obtener una coneccion hago:
public class SS
extends HttpServlet {
private Connection conn = null;
...
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:");
DataSource ds = (DataSource) envCtx.lookup("MySqlDS");
conn = ds.getConnection();
System.out.println(" Abriendo " + conn);
....
}
he hice el siguiente experimento:
conn1 : Conección de primera carga del Servlet
conn2 : Conección de segundo carga del Servlet
Cargar servlet (Crear conn1 )
Imprime :Abriendo org.jboss.resource.adapter.jdbc.WrappedConnection@ 834af6
Hacer select sobre conn1 (lo hace bien)
Pausar servlet Thread.sleep(7000) //7 segundos
Cargar servlet (Crear conn2)
Imprime: Abriendo org.jboss.resource.adapter.jdbc.WrappedConnection@ 1ae81ab
Hacer select sobre conn2 (lo hace bien)
conn2.close()
Cerrando org.jboss.resource.adapter.jdbc.WrappedConnection@ 1ae81ab
Termina pausa de 7 segundos
conn1.close()
En la última linea me da error, diciéndome la siguiente exception :
java.sql.SQLException: Connection handle has been closed and is unusable
Cerrando org.jboss.resource.adapter.jdbc.WrappedConnection@ 1ae81ab
****
O sea, el segundo servlet cierra conn2, y cuando el Primer servlet quiere cerra su conección (conn1), trata de hacerlo con la última conexión creada (conn2 en este caso).
Como puedo hacer para diferenciar estas conecciones???
datos anexos que pueden servir
Archivo xml
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/baseDeDatos</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>x</user-name>
<password>y</password>
<min-pool-size>2</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
</local-tx-datasource>
</datasources>
web.xml
....
<resource-ref>
<description>
Devuelve desde el pool de conecciones para mysql
</description>
<res-ref-name>jdbc/DefaultDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>