i think i don't get the utility of a connection pooling, since i have this situation: 30 threads try to perform at same time a db access with the call:
new Database().doSomething() My Database class is done like that: public class Database { private long start = 0; private Connection getConnection() throws Exception { // get start timestamp start = System.currentTimeMillis(); // get context: provides the starting point for resolution of names Context ctx = new InitialContext(); if (ctx == null) { throw new Exception("No Context"); } // retrieve datasource DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/someDB"); if (ds == null) { throw new Exception("No Datasource"); } // return db connection return ds.getConnection(); } // close connection resources private void closeResources(Connection con, Statement stmt, ResultSet rst, String method) { try { if (rst != null) rst.close(); rst = null; } catch (Exception e1) { // log things } try { if (stmt != null) stmt.close(); stmt = null; } catch (Exception e2) { // log things } try { if (con != null) con.close(); con = null; } catch (Exception e3) { // log things } // log elapsed time System.out.println("Database -> " + method + ": " + (System.currentTimeMillis() - start)); } // do something public void doSomething() { Connection con = null; Statement stmt = null; ResultSet rst = null; try { // get connection con = getConnection(); if (con == null) { throw new Exception("No Connection"); } stmt = con.createStatement(); // perform query rst = stmt .executeQuery("SELECT * FROM table1"); if (rst.next()) { // do stuff } else { throw new Exception("No results"); } } catch (Exception e1) { // log things } // close resources finally { closeResources(con, stmt, rst, "doSomething"); } } } When the 30 threads try to do call doSomething() method from Database object, i got this log: [wed, 09 apr 2008 00:55:03] INFO Database -> doSomething: 836 [wed, 09 apr 2008 00:55:04] INFO Database -> doSomething: 1444 [wed, 09 apr 2008 00:55:04] INFO Database -> doSomething: 2054 [wed, 09 apr 2008 00:55:05] INFO Database -> doSomething: 2417 [wed, 09 apr 2008 00:55:05] INFO Database -> doSomething: 3060 [wed, 09 apr 2008 00:55:06] INFO Database -> doSomething: 3647 [wed, 09 apr 2008 00:55:07] INFO Database -> doSomething: 4279 [wed, 09 apr 2008 00:55:07] INFO Database -> doSomething: 4967 [wed, 09 apr 2008 00:55:08] INFO Database -> doSomething: 5592 [wed, 09 apr 2008 00:55:09] INFO Database -> doSomething: 6208 [wed, 09 apr 2008 00:55:09] INFO Database -> doSomething: 7026 [wed, 09 apr 2008 00:55:10] INFO Database -> doSomething: 7455 [wed, 09 apr 2008 00:55:10] INFO Database -> doSomething: 8087 [wed, 09 apr 2008 00:55:11] INFO Database -> doSomething: 8705 [wed, 09 apr 2008 00:55:12] INFO Database -> doSomething: 9318 [wed, 09 apr 2008 00:55:12] INFO Database -> doSomething: 10040 [wed, 09 apr 2008 00:55:13] INFO Database -> doSomething: 11146 [wed, 09 apr 2008 00:55:14] INFO Database -> doSomething: 11702 [wed, 09 apr 2008 00:55:14] INFO Database -> doSomething: 12033 [wed, 09 apr 2008 00:55:15] INFO Database -> doSomething: 12658 [wed, 09 apr 2008 00:55:16] INFO Database -> doSomething: 13279 [wed, 09 apr 2008 00:55:16] INFO Database -> doSomething: 13897 [wed, 09 apr 2008 00:55:17] INFO Database -> doSomething: 14523 [wed, 09 apr 2008 00:55:17] INFO Database -> doSomething: 15139 [wed, 09 apr 2008 00:55:18] INFO Database -> doSomething: 15759 [wed, 09 apr 2008 00:55:19] INFO Database -> doSomething: 16411 [wed, 09 apr 2008 00:55:19] INFO Database -> doSomething: 17056 [wed, 09 apr 2008 00:55:20] INFO Database -> doSomething: 17672 [wed, 09 apr 2008 00:55:20] INFO Database -> doSomething: 18292 Last thread perform the operation in 18 seconds? that means it create database object when the other threads do, then wait for a connection? I thought connection pooling allow more than one connection, it seems that only one is active in this case, isn't it? My context.xml file is: <Context debug="5" reloadable="true" crossContext="true"> <Resource name="jdbc/someDB" auth="Container" type="javax.sql.DataSource" maxActive="600" maxIdle="300" maxWait="15000" username="someUser" password="somePass" driverClassName="com.mysql.jdbc.Driver" validationQuery="SELECT 1" url="jdbc:mysql://1.1.1.1:3306/somePath"/> </Context> so i can't understand the meaning of maxActive parameter.. i thought that could be at most 600 concurrent connection.I'm doing something wrong or connection pooling is not what i had in mind? Thanks --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]