Catching up... Since the problem in the original mails below where a iBATIS ping is enable without a valid ping query also appears as e.g. JIRA IBATIS-158, I would like to propose a few small changes to SimpleDataSource to minimize this behaviour in the future.
Can I still attach the changes to IBATIS-158 (which is now closed)? Regards, Sven Boden On Wed, 29 Jun 2005 22:13:18 -0600, you wrote: >Just an FYI: > >DBCP and most app server pools also support validation/ping queries. > >Clinton > >On 6/29/05, Meindert <[EMAIL PROTECTED]> wrote: >> >> Ok, sorry I didn't look very well. >> >> The answer is in the back of the manual: >> >> SimpleDataSource >> >> Property Name: Pool.PingQuery >> >> The ping query will be run against the database to test the connection >> ------------------------------ >> >> *From:* Meindert [mailto:[EMAIL PROTECTED] >> *Sent:* Wednesday, June 29, 2005 9:16 AM >> *To:* [email protected] >> *Subject:* RE: No operations allowed after connection closed. >> >> I have replaced my JDBC driver but am still having the same problem. >> >> Looked a bit around on google and got the following tip: >> >> >We solved this same problem by doing essentially what Mark advises >> >below. >> >> >We set the wait_timeout on the server to be a very large number and the >> >idle timeout for our connection pool to be fairly small. For what we are >> >doing, the time required to create a new connection is not very >> >significant, so we usually have the idle timeout for connections in the >> >pool set to just a few minutes. >> >> >Applications using our connection pool can specify an optional >> >configuration property that the pool manager will use to validate the >> >connection before it is returned to the application. "SELECT 1" seems to >> >be succinct, safe, and performant. If the query fails, the connection is >> >removed from the pool and another one is tried. If the pool is empty, of >> >course, a new connection is created. >> >> >Robert Stewart >> >> Will play around with this, but thought this could be some handy info for >> users with the same problem >> >> Meindert >> >> ------------------------------------ >> >> I have also seen this same error using a thin client. The first quesy >> throws a exception about closed connection then creates a new connection and >> carries on. I am using the same version of mysql but connector 3.1.6.. >> When i use the same client same queries against our hsqldb db we never get >> the problem. I have been working on the hsqldb side for a while and assumed >> it was an error in my code which i would fix later. i have a newer >> >> version of mysql 4.1.12 which is our new base line so i will try it out on >> this database and let you know.. But it sounds like a bug in the driver? >> >> Steve.. >> >> -----Original Message----- >> From: Meindert [mailto:[EMAIL PROTECTED]<[EMAIL PROTECTED]> >> ] >> Sent: Thu 6/23/2005 2:19 PM >> To: [email protected]; 'Brandon Goodin' >> Subject: RE: No operations allowed after connection closed. >> >> Database version: >> >> mysql-connector-java-3.0.16-ga-bin.jar >> >> mysql-4.1.9 >> >> To reproduce I open the website on the index page and then close the >> browser, the next day I open the browser again and I get the error. >> >> The error comes from the connection pool, I find this in my Catalina.out >> log: >> >> DEBUG [http-80-Processor25] - Returned connection 12839271 to pool. (This >> was the day before) >> >> DEBUG [http-80-Processor24] - Checked out connection 12839271 from pool. >> (The connection for the paginated list on my index.shtml page) >> >> DEBUG [http-80-Processor24] - {conn-100045} Connection >> >> DEBUG [http-80-Processor24] - A bad connection (12839271) attempted to >> return to the pool, discarding connection. >> >> The query fails and the index page comes up and prints the exception >> trace. >> >> Pressing F5 reloads the page and fetches a new connection that succeeds. >> >> The connection is used for: >> setEmployeeList(dailyBulletinService.getOutStaff()); >> >> Is this enough info? >> >> MEINDERT HOVING >> >> Developer, Pastel Payroll >> >> Direct: >> >> +27 (21) 680 9015 >> >> Main: >> >> +27 (21) 680 9000 >> >> Fax: >> >> +27 (21) 680 9090 >> >> [EMAIL PROTECTED] >> >> www.pastel.co.za <http://www.pastel.co.za> >> >> 9 out of 10 accountants recommend PASTEL Accounting >> >> -----Original Message----- >> From: Brandon Goodin [mailto:[EMAIL PROTECTED]<[EMAIL PROTECTED]>] >> >> Sent: Thursday, June 23, 2005 1:18 PM >> To: [email protected] >> Subject: Re: No operations allowed after connection closed. >> >> Meindert, >> >> Please provide more information. I can't really tell what is happening >> >> in your situation. If you Servlet Session is timing out it should have >> >> not affect on the database connection. My notion is that it is >> >> something else. Please provide the database and driver with versions >> >> that you are using and a more specific description of what the >> >> application is doing when you experience this error. >> >> Thanks >> >> Brandon >> >> On 6/23/05, Meindert <[EMAIL PROTECTED]> wrote: >> >> > >> >> > >> >> > >> >> > >> >> > How can I force a reconnect after a session has been timed out >> >> > ________________________________ >> >> > >> >> > >> >> > I was hoping anybody could help me here, it is probably a stupid thing >> but >> I >> >> > can't seem to find the answer.. >> >> > >> >> > My application is based on the jpetshop. >> >> > >> >> > >> >> > >> >> > Anyway, I have on my main page a paginated list (employeeList) that must >> be >> >> > fetched every time the page is loaded. >> >> > >> >> > I set it to null in the reset method of the bean >> >> > >> >> > >> >> > >> >> > public void reset() { >> >> > >> >> > pageDirection = null; >> >> > >> >> > employeeList = null; >> >> > >> >> > } >> >> > >> >> > >> >> > >> >> > And I call the service layer to do the (simple) query, when I go to >> >> > index.shtml >> >> > >> >> > >> >> > >> >> > public String index() { >> >> > >> >> > setEmployeeList(dailyBulletinService.getOutStaff()); >> >> > >> >> > return "success"; >> >> > >> >> > } >> >> > >> >> > >> >> > >> >> > My problem is that the page loads with an error "after a while" (I >> assume >> >> > after the session times out) >> >> > >> >> > Pressing F5 in the browser will clear this error. >> >> > >> >> > What am I doing wrong or how do I get ride of it? >> >> > >> >> > I'm using mysql, tomcat on a linux machine. >> >> > >> >> > >> >> > >> >> > The error is: java.sql.SQLException: Communication link failure: >> >> > java.io.EOFException, underlying cause: null >> >> > Caused by: java.sql.SQLException: No operations allowed after connection >> >> > closed. >> >> > >> >> > Connection was closed due to the following exception: >> >> > >> >> > ** BEGIN NESTED EXCEPTION ** >> >> > >> >> > java.sql.SQLException >> >> > MESSAGE: Communication link failure: java.io.EOFException, underlying >> cause: >> >> > null >> >> > >> >> > ** BEGIN NESTED EXCEPTION ** >> >> > >> >> > java.io.EOFException >> >> > >> >> > >> >> > >> >> > >> >> > >> >> > Please help >> >> > >> >> > Meindert >> >>
