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