one JdbcDataSource has only one connection the connection object/the connLastUsed etc needs to be protected.
On Tue, Nov 18, 2008 at 9:24 PM, Mark Miller <[EMAIL PROTECTED]> wrote: > JdbcDataSource looks like it has a little funkiness going on. Why is there a > synchronize block there? Can multiple threads call getConnection > concurrently? If they can, this is not thread safe anyway. If they can't, > why is factory.call (or is it the close?) being protected with a sync? > > private Connection getConnection() throws Exception { > long currTime = System.currentTimeMillis(); > if (currTime - connLastUsed > CONN_TIME_OUT) { > synchronized (this) { > Connection tmpConn = factory.call(); > close(); > connLastUsed = System.currentTimeMillis(); > return conn = tmpConn; > } > > } else { > connLastUsed = currTime; > return conn; > } > } > -- --Noble Paul