Hi,
I've had this as well. Solved it by customising JDBCRealm to use database
connection pooling - perhaps a little heavy handed ;-).
As far as I could make out the problem seemed to be related to the wait_timout
variable set to 28800 by default. According to earlier posts
1) This bug is fixed in 3.2.2. , 3.3 and 4.0
2) Can also be solved by adding ;autoreconnect=true to the db connect string
(haven't tried this myself)
Andrew
On Mon, 19 Mar 2001, you wrote:
> i had a similar problem and solved it by changing connectionURL to:
> connectionURL="jdbc:mysql://localhost/dbase?user=somebody&password=secre
> t"
> and commenting connectionName and Password.
>
> vVolf
>
>
> > -----Oryginalna wiadomooeæ-----
> > Od: Vladimir Grishchenko [mailto:[EMAIL PROTECTED]]
> > Wys³ano: 16 marca 2001 20:45
> > Do: [EMAIL PROTECTED]
> > Temat: JDBCRealm reconnect problems?
> >
> >
> > Has anyone experienced JDBCReconnect problems???
> > Looks like mysql db connection times out and JDBCRealm cannot
> > reopen it for some reason.
> > Actually it tries to reopen it and somehow is able to authenticate
> > a user, but then dies completely...
> > Any ideas what can be wrong?
> >
> > This is the error/exceptions from tomcat log file:
> >
> >
> > 2001-03-16 11:20:33 - ContextManager: JDBCRealm: The database
> > connection is null or was
> > found to be closed. Trying to re-open it.
> > 2001-03-16 11:20:33 - ContextManager: JDBCRealm: There was an
> > SQLException while in
> > authenticate: null
> > 2001-03-16 11:20:33 - ContextManager: JDBCRealm:
> > SQLException: java.sql.SQLException:
> > Error during query: Unexpected Exception:
> > java.sql.SQLException message given:
> > Communication link failure: java.io.IOException
> > 2001-03-16 11:20:38 - ContextManager: JDBCRealm: The database
> > connection is null or was
> > found to be closed. Trying to re-open it.
> > 2001-03-16 11:20:38 - ContextManager: JDBCRealm:
> > JDBCRealm.authenticate: SELECT password
> > FROM profiles WHERE username = ?
> > 2001-03-16 11:20:38 - ContextManager: JDBCRealm:
> > Authentication unsuccessful for user null
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm:
> > Authentication successful for user Walter
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm: Auth ok, user=Walter
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm: Controled
> > access for Walter R( /ngs_web +
> > /entering/buttons.jsp + null) Ct
> > (jsp(org.apache.jasper.servlet.JspServlet/null) )
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm: There was an
> > SQLException while in
> > getUserRoles: Walter
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm:
> > SQLException: java.sql.SQLException:
> > Error during query: Unexpected Exception:
> > java.sql.SQLException message given:
> > Communication link failure: java.io.IOException
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm: Auth ok,
> > user has no roles
> > 2001-03-16 11:20:47 - ContextManager: JDBCRealm: UnAuthorized Y
> > 2001-03-16 11:20:55 - ContextManager: JDBCRealm: The database
> > connection is null or was
> > found to be closed. Trying to re-open it.
> > 2001-03-16 11:20:55 - Ctx( /ngs_web ): Exception in: R(
> > /ngs_web + /entering/buttons.jsp +
> > null) - java.lang.NullPointerException
> > at
> > org.gjt.mm.mysql.PreparedStatement.executeQuery(PreparedStatem
> > ent.java:198)
> > at
> > org.apache.tomcat.request.JDBCRealm.authenticate(JDBCRealm.java:307)
> > at
> > org.apache.tomcat.request.JDBCRealm.authenticate(JDBCRealm.java:482)
> > at
> > org.apache.tomcat.core.ContextManager.doAuthenticate(ContextMa
> > nager.java:837)
> > at
> > org.apache.tomcat.core.RequestImpl.getRemoteUser(RequestImpl.java:341)
> > at
> > org.apache.tomcat.request.JDBCRealm.authorize(JDBCRealm.java:503)
> > at
> > org.apache.tomcat.core.ContextManager.doAuthorize(ContextManag
> > er.java:855)
> > at
> > org.apache.tomcat.core.ContextManager.internalService(ContextM
> > anager.java:789)
> > at
> > org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> > at
> > org.apache.tomcat.service.http.HttpConnectionHandler.processCo
> > nnection(HttpConnectionHandler.java:210)
> > at
> > org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoin
> > t.java:416)
> > at
> > org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPo
> > ol.java:498)
> > at java.lang.Thread.run(Thread.java:498)
> >
> > 2001-03-16 11:21:00 - Ctx( /ngs_web ): Exception in: R(
> > /ngs_web + /display/ngs_home.jsp +
> > null) - javax.servlet.ServletException
> > at java.lang.Throwable.<init>(Throwable.java:96)
> > at java.lang.Exception.<init>(Exception.java:44)
> > at
> > javax.servlet.ServletException.<init>(ServletException.java:161)
> > at
> > org.apache.jasper.runtime.PageContextImpl.handlePageException(
> > PageContextImpl.java:459)
> > at
> > display._0002fdisplay_0002fngs_0005fhome_0002ejspngs_0005fhome
> > _jsp_4._jspService(_0002fdisplay_0002fngs_0005fhome_0002ejspng
> > s_0005fhome_jsp_4.java:2404)
> > at
> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
> > at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> > org.apache.jasper.servlet.JspServlet$JspServletWrapper.service
> > (JspServlet.java:177)
> > at
> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> > .java:318)
> > at
> > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
> > at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> > org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper
> > .java:404)
> > at org.apache.tomcat.core.Handler.service(Handler.java:286)
> > at
> > org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> > at
> > org.apache.tomcat.core.ContextManager.internalService(ContextM
> > anager.java:797)
> > at
> > org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> > at
> > org.apache.tomcat.service.http.HttpConnectionHandler.processCo
> > nnection(HttpConnectionHandler.java:210)
> > at
> > org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoin
> > t.java:416)
> > at
> > org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPo
> > ol.java:498)
> > at java.lang.Thread.run(Thread.java:498)
> > Root cause:
> > java.lang.NullPointerException
> > at
> > org.gjt.mm.mysql.PreparedStatement.executeQuery(PreparedStatem
> > ent.java:198)
> > at
> > org.apache.tomcat.request.JDBCRealm.authenticate(JDBCRealm.java:307)
> > at
> > org.apache.tomcat.request.JDBCRealm.authenticate(JDBCRealm.java:482)
> > at
> > org.apache.tomcat.core.ContextManager.doAuthenticate(ContextMa
> > nager.java:837)
> > at
> > org.apache.tomcat.core.RequestImpl.getRemoteUser(RequestImpl.java:341)
> > at
> > org.apache.tomcat.facade.HttpServletRequestFacade.getRemoteUse
> > r(HttpServletRequestFacade.java:250)
> > at
> > display._0002fdisplay_0002fngs_0005fhome_0002ejspngs_0005fhome
> > _jsp_4._jspService(_0002fdisplay_0002fngs_0005fhome_0002ejspng
> > s_0005fhome_jsp_4.java:1488)
> > at
> > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
> > at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> > org.apache.jasper.servlet.JspServlet$JspServletWrapper.service
> > (JspServlet.java:177)
> > at
> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet
> > .java:318)
> > at
> > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)
> > at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > at
> > org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper
> > .java:404)
> > at org.apache.tomcat.core.Handler.service(Handler.java:286)
> > at
> > org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> > at
> > org.apache.tomcat.core.ContextManager.internalService(ContextM
> > anager.java:797)
> > at
> > org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> > at
> > org.apache.tomcat.service.http.HttpConnectionHandler.processCo
> > nnection(HttpConnectionHandler.java:210)
> > at
> > org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoin
> > t.java:416)
> > at
> > org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPo
> > ol.java:498)
> > at java.lang.Thread.run(Thread.java:498)
> >