Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2004, 09:07
Machine80
 
Fecha de Ingreso: enero-2004
Mensajes: 144
Antigüedad: 20 años, 3 meses
Puntos: 0
Servlet, Connection y la con.. eccion

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>