Matthew Hixson wrote:
Hi Mark, I'm just using GenericObjectPool and it does not have a setValidationQuery() method. Do I need to use a more specific object pool class or did you mean that setValidationQuery needs to be called on something else? My method now looks like:

GenericObjectPool pool = new GenericObjectPool(null);
pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_GROW);
pool.setTestOnBorrow(true);
pool.setTestOnReturn(true);
pool.setTimeBetweenEvictionRunsMillis(10000);
pool.setTestWhileIdle(true);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(jdbcUrl),null); new PoolableConnectionFactory(connectionFactory,pool,null,null,false,true);
Replace the second null in the PoolableConnectionFactory constructor above with an SQL string representing the validation query. The validation query needs to return at least on row for validation to succeed. Supplying null to the validationQuery parameter in the connection factory constructor turns off validation, regardless of the pool setting.
Phil
return(new PoolingDataSource(pool));

  Thanks,
   -M@

On Apr 20, 2009, at 1:28 AM, Mark Thomas wrote:

Matthew Hixson wrote:
Occasionally I'll see this exception in our logs. I have setup the pool
like so:

GenericObjectPool pool = new GenericObjectPool(null);
pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_GROW);
pool.setTestOnBorrow(true);
pool.setTestOnReturn(true);
pool.setTestWhileIdle(true);

Is that not sufficient to have DBCP test a connection before releasing
it from the pool for use?

No. You need to call set the validation query too. E.g.:

pool.setValidationQuery("SELECT 1");

HTH,

Mark

 Thanks,
   -M@


-------------------------------------------
java.sql.SQLException: Communication link failure: java.io.EOFException,
underlying cause: null

** BEGIN NESTED EXCEPTION **

java.io.EOFException

STACKTRACE:

java.io.EOFException
   at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1395)
   at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1539)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1930)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1168)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1279)
   at com.mysql.jdbc.Connection.execSQL(Connection.java:2281)
   at
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1634)
   at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)

...

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to