I started doing a little testing on the Tyrex pools on my local machine, 
and it doesn't appear to actually be pooling the connections.  In a 1 
minute period, I managed to get 118 hits (none of the connection lasted 
for the entire minute - they lasted at most 5 seconds) and I checked my 
outgoing connections, and had 128 (I'm assuming my stress-tester didn't 
count 10 connections that were active when I told it to stop.)

Anyhow, the point is, every time I request a connection from the pool, 
I'm getting a brand new connection - not a recycled one.  I'm calling 
close() on the connection in a finally block (and it is getting called). 
  Is there something else I have to do on the DataSource to ensure that 
the connection gets recycled properly?  Or am I missing some 
configuration in my server.xml?

Regards,
Will Stranathan

Connection conn = null;
try {
     Context ctx = new InitialContext();
     DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Directory");
     conn = ds.getConnection();
     // etc.
     }
} catch (Exception e) {
     e.printStackTrace();
} finally {
     try {
         conn.close();
         System.out.println("closed connection");
     } catch (Exception ex) {
         System.err.println("Error closing connection");
     }
}

<Resource name="jdbc/Directory" auth="SERVLET"
                     type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Directory">
<parameter><name>user</name><value>...</value></parameter>
<parameter><name>password</name><value>...</value></parameter>
<parameter><name>driverClassName</name><value>org.gjt.mm.mysql.Driver</value></parameter>
<parameter><name>driverName</name><value>jdbc:mysql://localhost/directory</value></parameter>
</ResourceParams>

Reply via email to