David Logan wrote:
Michael Lai wrote:
I am currently using MySQL 5.0.15 with mysql-connector-java-3.1.11.
I can access the database from my JSPs with no problem except for one
small issue. After a long delay (usually overnight), when someone
first tries to access the database, I would get the following error:
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:2690) at
com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2619) at
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1552) at
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666) at
com.mysql.jdbc.Connection.execSQL(Connection.java:2978) at
com.mysql.jdbc.Connection.execSQL(Connection.java:2902) at
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:933)
at
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1027)
at
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at
org.apache.jsp.processLogin_jsp._jspService(org.apache.jsp.processLogin_jsp:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595) ** END NESTED EXCEPTION **
Last packet sent to the server was 0 ms ago.
But afterwards, on the second and subsequent attempts, the database
runs fine. It is only the first try after a long idle period that I
get this error message. I am not sure how to fix this. I am
guessing that the database connection is down after a long idle
period and have to recreate a connection first after the first try.
Hi Michael,
Try looking at
http://dev.mysql.com/doc/refman/4.1/en/server-system-variables.html more
specifically the connect-timeout variable. You should use SHOW VARIABLES
LIKE %connect%; and check the value.
It maybe this and you can stretch it out further if you need to.
Regards
I tried lengthening the connection timeout but it doesn't seem to be
working. Here is my ROOT.xml configuration:
Context path= docBase=/home/tomcat/applications/ debug=0
reloadable=true
Resource name=jdbc/ type=javax.sql.DataSource
auth=Container driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/hostname?autoReconnect=true
username= password=
maxActive=8 maxIdle=-1 maxWait=1 /
/Context
Is there any way to keep a connection alive indefinitely? I thought the
autoReconnect would do the trick.
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]