Try adding this to your persistence.xml: <property name="hibernate.c3p0.acquire_increment" value="3" />
<property name="hibernate.c3p0.idle_test_period" value="14400" /> <property name="hibernate.c3p0.timeout" value="25200" /> <property name="hibernate.c3p0.max_size" value="15" /> <property name="hibernate.c3p0.min_size" value="3" /> <property name="hibernate.c3p0.max_statements" value="0" /> <property name="hibernate.c3p0.preferredTestQuery" value="select 1;" /> On Tue, Dec 30, 2008 at 8:05 AM, tarakarajendra prasad < rajendr...@yahoo.co.uk> wrote: > Hello Kees De Kooter, > > Please Mention the query and hibernate.cfg.xml properties, you have given > so that we can know little more better the error. > wishes, > Prasad DTR > > > ----- Original Message ---- > From: Kees de Kooter <kdekoo...@gmail.com> > To: Tomcat Users List <users@tomcat.apache.org> > Sent: Monday, 29 December, 2008 20:50:05 > Subject: Re: JPA/Hibernate persistence and MySQL connection timeout > > Hi Ken, > > Take a look at this page: > > http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/configuration.html > As you can see the datasource is obtained using JNDI: > <jta-data-source>java:/DefaultDS</jta-data-source> > > > Cheers, > Kees de Kooter > http://www.boplicity.net > > > > On Mon, Dec 29, 2008 at 14:41, Ken Bowen <kbo...@als.com> wrote: > > Kees, > > > > Can you point me to a discussion of how to do that? > > > > Thanks, > > Ken > > > > On Dec 29, 2008, at 3:42 AM, Kees de Kooter wrote: > > > >> Why don't u use the existing datasources for JPA (instead of setting > >> the hibernate.connection properties)? > >> > >> Kees > >> > >> > >> On Mon, Dec 29, 2008 at 00:50, Ken Bowen <kbo...@als.com> wrote: > >>> > >>> Hi All, > >>> > >>> I'm using: Tomcat 6.0.18; Mysql 5.0.51a; Java 1.5; Hibernate 3.2; (no > >>> spring) > >>> > >>> MyApp utilizes five (5) distinct mysql catalogs (databases). > >>> Originally all 5 were accessed using JDBC/JNDI with Resources that all > >>> look > >>> like this > >>> (in webapps/MyApp/META-INF): > >>> > >>> <Resource name="jdbc/CATALOGNAME" auth="Container" > >>> type="javax.sql.DataSource" > >>> maxActive="100" maxIdle="30" maxWait="10000" > >>> username="XXXXX" password="XXXXX" > >>> driverClassName="com.mysql.jdbc.Driver" > >>> url="jdbc:mysql://localhost:3306/CATALOGNAME" > >>> validationQuery="select 1" > >>> /> > >>> > >>> Everything worked fine, including the validationQuery to deal with > MySQL > >>> closing connections overnight. > >>> > >>> Recently I replaced the JDBC access for 3 of the catalogs by use of > >>> JPA/Hibernate persistence, > >>> while leaving the other two catalogs as originally implemented (they > >>> consist > >>> of large tables > >>> containing daily price information; hence not very object-oriented.) > The > >>> persistence.xml looks > >>> like this: > >>> > >>> <persistence-unit name="ctdbPU" transaction-type="RESOURCE_LOCAL"> > >>> <provider>org.hibernate.ejb.HibernatePersistence</provider> > >>> > >>> ..... lots of class entries like: > >>> <class>com.connectedtrading.database.users.AbstractLineitem</class> > >>> <class>com.connectedtrading.database.users.Lineitem</class> > >>> > >>> <properties> > >>> <property name="hibernate.connection.driver_class" > >>> value="com.mysql.jdbc.Driver" /> > >>> <property name="hibernate.connection.url" > >>> value="jdbc:mysql://localhost:3306/CATALOGNAME" /> > >>> <property name="hibernate.connection.username" value="XXXXX" /> > >>> <property name="hibernate.connection.password" value="XXXXX" /> > >>> </properties> > >>> </persistence-unit> > >>> > >>> [Interestingly enough, only one of the 3 CATALOGNAMEs appears.] > >>> Note that I left all 5 of the Resource elements in place in > context.xml. > >>> > >>> Once again, everything works well, EXCEPT that now when I leave the > >>> system > >>> running overnight and > >>> no accesses occur (it's only in dev mode), in the morning I now get the > >>> exception shown at the > >>> end of this email. It certainly looks like the "mysql" disconnect > >>> behavior. > >>> As with the JDBC case, repeating the access causes everything to start > >>> working correctly. > >>> The query being submitted is > >>> > >>> org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:75) > >>> > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByProperty(UserDAO.java:180) > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByLogin(UserDAO.java:203) > >>> > >>> which is a hibernate query supporting user login. > >>> > >>> If anyone on the list has had experience with this issue under > >>> JPA/Hibernate > >>> persistence, > >>> I hope you can give me some pointers to dealing with it. > >>> > >>> Thanks much in advance, > >>> Ken Bowen > >>> > >>> ----- The Exception----- > >>> > >>> HTTP Status 500 - > >>> > >>> type Exception report > >>> > >>> message > >>> > >>> description The server encountered an internal error () that prevented > it > >>> from fulfilling this request. > >>> > >>> exception > >>> > >>> javax.servlet.ServletException: javax.persistence.PersistenceException: > >>> org.hibernate.exception.JDBCConnectionException: could not execute > query > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) > >>> > >>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > >>> > >>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > >>> root cause > >>> > >>> javax.persistence.PersistenceException: > >>> org.hibernate.exception.JDBCConnectionException: could not execute > query > >>> > >>> > >>> > org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630) > >>> org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:75) > >>> > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByProperty(UserDAO.java:180) > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByLogin(UserDAO.java:203) > >>> > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.locateUser(LoginProcessor.java:54) > >>> > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.checkLogin(LoginProcessor.java:35) > >>> > >>> > >>> > com.connectedtrading.actions.ProcessLoginAction.execute(ProcessLoginAction.java:33) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) > >>> > >>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > >>> > >>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > >>> root cause > >>> > >>> org.hibernate.exception.JDBCConnectionException: could not execute > query > >>> > >>> > >>> > org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74) > >>> > >>> > >>> > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) > >>> org.hibernate.loader.Loader.doList(Loader.java:2216) > >>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) > >>> org.hibernate.loader.Loader.list(Loader.java:2099) > >>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) > >>> > >>> > >>> > org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) > >>> > >>> > >>> > org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) > >>> org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) > >>> org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) > >>> org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66) > >>> > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByProperty(UserDAO.java:180) > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByLogin(UserDAO.java:203) > >>> > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.locateUser(LoginProcessor.java:54) > >>> > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.checkLogin(LoginProcessor.java:35) > >>> > >>> > >>> > com.connectedtrading.actions.ProcessLoginAction.execute(ProcessLoginAction.java:33) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) > >>> > >>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > >>> > >>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > >>> root cause > >>> > >>> com.mysql.jdbc.CommunicationsException: Communications link failure due > >>> to > >>> underlying exception: > >>> > >>> ** BEGIN NESTED EXCEPTION ** > >>> > >>> java.net.SocketException > >>> MESSAGE: Broken pipe > >>> > >>> STACKTRACE: > >>> > >>> java.net.SocketException: Broken pipe > >>> at java.net.SocketOutputStream.socketWrite0(Native Method) > >>> at > >>> java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) > >>> at java.net.SocketOutputStream.write(SocketOutputStream.java:136) > >>> at > >>> java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) > >>> at > java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) > >>> at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2739) > >>> at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2650) > >>> at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1581) > >>> at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695) > >>> at com.mysql.jdbc.Connection.execSQL(Connection.java:3026) > >>> at > >>> > >>> > com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137) > >>> at > >>> > >>> > com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231) > >>> at > >>> > org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) > >>> at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) > >>> at org.hibernate.loader.Loader.doQuery(Loader.java:674) > >>> at > >>> > >>> > org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) > >>> at org.hibernate.loader.Loader.doList(Loader.java:2213) > >>> at > >>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) > >>> at org.hibernate.loader.Loader.list(Loader.java:2099) > >>> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) > >>> at > >>> > >>> > org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) > >>> at > >>> > >>> > org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) > >>> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) > >>> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) > >>> at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66) > >>> at > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByProperty(UserDAO.java:180) > >>> at > >>> > com.connectedtrading.database.users.UserDAO.findByLogin(UserDAO.java:203) > >>> at > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.locateUser(LoginProcessor.java:54) > >>> at > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.checkLogin(LoginProcessor.java:35) > >>> at > >>> > >>> > com.connectedtrading.actions.ProcessLoginAction.execute(ProcessLoginAction.java:33) > >>> at > >>> > >>> > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) > >>> at > >>> > >>> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) > >>> at > >>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > >>> at > >>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) > >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > >>> at > >>> > >>> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > >>> at > >>> > >>> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > >>> at > >>> > >>> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > >>> at > >>> > >>> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > >>> at > >>> > >>> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > >>> at > >>> > >>> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > >>> at > >>> > >>> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > >>> at > >>> > >>> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) > >>> at > >>> > >>> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) > >>> at > >>> > >>> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) > >>> at > >>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > >>> at java.lang.Thread.run(Thread.java:595) > >>> > >>> > >>> ** END NESTED EXCEPTION ** > >>> > >>> > >>> > >>> Last packet sent to the server was 1 ms ago. > >>> com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2757) > >>> com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2650) > >>> com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1581) > >>> com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695) > >>> com.mysql.jdbc.Connection.execSQL(Connection.java:3026) > >>> > >>> > >>> > com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137) > >>> > >>> > >>> > com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231) > >>> > >>> > org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) > >>> org.hibernate.loader.Loader.getResultSet(Loader.java:1787) > >>> org.hibernate.loader.Loader.doQuery(Loader.java:674) > >>> > >>> > >>> > org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) > >>> org.hibernate.loader.Loader.doList(Loader.java:2213) > >>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) > >>> org.hibernate.loader.Loader.list(Loader.java:2099) > >>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) > >>> > >>> > >>> > org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) > >>> > >>> > >>> > org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) > >>> org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) > >>> org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) > >>> org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66) > >>> > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByProperty(UserDAO.java:180) > >>> > >>> > com.connectedtrading.database.users.UserDAO.findByLogin(UserDAO.java:203) > >>> > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.locateUser(LoginProcessor.java:54) > >>> > >>> > >>> > com.connectedtrading.user_manage.LoginProcessor.checkLogin(LoginProcessor.java:35) > >>> > >>> > >>> > com.connectedtrading.actions.ProcessLoginAction.execute(ProcessLoginAction.java:33) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) > >>> > >>> > >>> > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) > >>> > >>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > >>> > >>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > >>> note The full stack trace of the root cause is available in the Apache > >>> Tomcat/6.0.18 logs. > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>> > >>> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >> For additional commands, e-mail: users-h...@tomcat.apache.org > >> > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >