Hi Clinton, sorry I didn't mean to offend you, it may well be by design but it definitely is an issue in our situation. We have a firewall between the db and webserver which is closing inactive connections when the app sits idle for a period of time. After the idle period, the first person who attempts to logon to the website experiences a 15 minute lag while it waits for the connection pool to deem the connection it selected out of the pool bad, recycle it and start using the fresh connection. We are open to using any connection pool mechanism with ibatis that has an option to test idle pooled connections and recycle them if they are deemed bad on a configurable basis. See below for a log snippit, notice the timestamp delay between when it started testing the connection and when it finally failed. 2008-05-24 21:12:55,720 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Checked out connection 15102369 from pool.2008-05-24 21:12:55,720 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Testing connection 15102369 ...2008-05-24 21:28:21,364 WARN [com.ibatis.common.jdbc.SimpleDataSource] Execution of ping query 'select 1 from DUAL' failed: Io exception: Connection timed out2008-05-24 21:28:21,365 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Connection 15102369 is BAD: Io exception: Connection timed out2008-05-24 21:28:21,365 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] A bad connection (15102369) was returned from the pool, getting another connection.2008-05-24 21:28:21,440 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Created connection 135206972008-05-24 21:28:21,460 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Testing connection 13520697 ...2008-05-24 21:28:21,463 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Connection 13520697 is GOOD!2008-05-24 21:28:21,463 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] Returned connection 13520697 to pool. I am certainly open to trying oracle.jdbc.pool.OracleConnectionPoolDataSource - any suggestions for a datasource that has a feature to test idle connections on a configurable basis and recycle them (hopefully before a user notices a problem) would be great. We only saw SimpleDataSource and DBCP as options in the ibatis documentation so that is what we have tried so far (well we did try C3P0 without success and that is the reason for the post - hopefully to find someone who has actually successfully implemented c3p0 or some other datasource that allows idle connection testing/eviction). Richard, would you have an example SqlMapConfig.xml using this datasource type? Thanks again.
Date: Thu, 29 May 2008 22:12:22 -0600From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Re: C3P0 configuration example for iBatis anyone?>> SimpleDatasource exhibits an issue with pool.pingquery taking roughly 15min before a bad connection is deemed bad and removed from the pool, there seems to be no reaper or evictor thread to test idle connections on a regular basis as opposed to testing at checkout time. <<This is not an issue, it is by design. SimpleDataSource is a synchronous connection pool. It does not spawn threads for eviction or any other reason. Why do you care when the connection is removed from the pool? Clinton On Thu, May 29, 2008 at 9:34 PM, Anton Rothenbacher <[EMAIL PROTECTED]> wrote: Greetings, the short story is that we have tried DBCP and SimpleDatasource with iBatis but had some issues with each, we are connecting to an Oracle 10g database. * SimpleDatasource exhibits an issue with pool.pingquery taking roughly 15min before a bad connection is deemed bad and removed from the pool, there seems to be no reaper or evictor thread to test idle connections on a regular basis as opposed to testing at checkout time.* DBCP has an evictor thread that can test and recycle bad connections on a regular basis but we were unable to get any decent information in the log about it's idle connection test activity (not a huge issue granted but we would like to see some detail when there is a bad connection so that we can investigate what is going on). A third option that we are investigating is to try C3P0 to be used as a connection pool mechanism to be used by iBatis but I'm unable to find documentation or examples on exactly how to configure SqlMapConfig.xml/SqlMapConfig.properties to make it work. I found the following link that suggests it is definitely possible but I'm not following exactly how to configure this. http://www.mail-archive.com/[email protected]/msg07957.html================================= On 2/28/07, Clinton Begin <[EMAIL PROTECTED]> wrote:Absolutely. You can use any DataSource implementation you like. All youneed to do is build a DataSourceFactory and pass the fully qualifiedclassname (or type alias) into the datasource type in the <dataSource>element of your SqlMapConfig.xmlpublic interface DataSourceFactory {public void initialize(Map map);public DataSource getDataSource();}ClintonOn 2/28/07, JoeSmith < [EMAIL PROTECTED]> wrote:>> Is it possible to use the c3p0 datasource/connection pool with> iBatis? Does anyone know how this package compares to dbcp? Are there any> known issues or problems?================================= Has anyone successfully used C3P0 datasource with ibatis? If so could you share an example configuration (or point me to some docs) as to the proper config to swap out dbcp or simple datasource with c3p0? It seems it shouldn't be difficult but google is not being my friend in finding information on it. Does it require additional code in the app or just config changes in the SqlMapConfig.xml?Thanks for any insight you can provide. Change the world with e-mail. Join the i'm Initiative from Microsoft. _________________________________________________________________ Make every e-mail and IM count. Join the i’m Initiative from Microsoft. http://im.live.com/Messenger/IM/Join/Default.aspx?source=EML_WL_ MakeCount
