Re: Looking for suggestions or pointers ..
See javax.servlet.ServletContextListener. A context is destroyed and initialized when Tomcat is reloaded. You can define a context listener in WEB-INF/web.xml: bla.bla.MyContextListener Works very well for my applications. Note: Take a look at the various SessionListeners also. They can be very easy to use also for clean up. Greetings, Ronald. On Monday 14 July 2003 10:14, Mufaddal Khumri wrote: > The problem: > > We have some codebase that uses a legacy connection pool manager (cpm) > to manage database connections with mysql. The very first time the > login.jsp is used by a user causes an instance of cpm being created > and stored in the application context. The cpm gets and frees > connection objects . Everything works fine, but when the webapp is > reloaded a few times it gives the errors that i have logged below. The > reason for the error is that the connections that are created and > maintained by cpm are not being closed when the webapp is reloaded in > tomcat. Is there a way or where in tomcat can we write clean up code , > for example close connections to databases. ?? > > Thanks. > > // Error show in Browser > > java.lang.NullPointerException > at > com.wavesinmotion.cw.classes.db.ConnectionPoolManager.getConnectionPool( > ConnectionPoolManager.java:112) > at > com.wavesinmotion.cw.classes.jsphelpers.LoginServlet.isValid(LoginServle > t.java:78) > at > com.wavesinmotion.cw.classes.jsphelpers.LoginServlet.doPost(LoginServlet > .java:32) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica > tionFilterChain.java:247) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt > erChain.java:193) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv > e.java:260) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 > 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv > e.java:191) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:643) > at > org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.ja > va:246) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:641) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 > 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java:241 > 5) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java > > :180) > > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:643) > at > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa > lve.java:170) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:641) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java > > :172) > > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:641) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 > 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. > java:174) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i > nvokeNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 > 80) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:43 > 2) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC > onnection(Http11Protocol.java:386) > at > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:53 > 4) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool > .java:530) > at java.lang.Thread.run(Thread.java:554) > > > // Error show in log.out > > 2003-07-14 12:09:01 StandardWrapperValve[LoginServlet
Looking for suggestions or pointers ..
The problem: We have some codebase that uses a legacy connection pool manager (cpm) to manage database connections with mysql. The very first time the login.jsp is used by a user causes an instance of cpm being created and stored in the application context. The cpm gets and frees connection objects . Everything works fine, but when the webapp is reloaded a few times it gives the errors that i have logged below. The reason for the error is that the connections that are created and maintained by cpm are not being closed when the webapp is reloaded in tomcat. Is there a way or where in tomcat can we write clean up code , for example close connections to databases. ?? Thanks. // Error show in Browser java.lang.NullPointerException at com.wavesinmotion.cw.classes.db.ConnectionPoolManager.getConnectionPool( ConnectionPoolManager.java:112) at com.wavesinmotion.cw.classes.jsphelpers.LoginServlet.isValid(LoginServle t.java:78) at com.wavesinmotion.cw.classes.jsphelpers.LoginServlet.doPost(LoginServlet .java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 80) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.ja va:246) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 80) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:241 5) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa lve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 80) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i nvokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4 80) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:43 2) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC onnection(Http11Protocol.java:386) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:53 4) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:530) at java.lang.Thread.run(Thread.java:554) // Error show in log.out 2003-07-14 12:09:01 StandardWrapperValve[LoginServlet]: Servlet.service() for servlet LoginServlet threw exception java.lang.NullPointerException at com.wavesinmotion.cw.classes.db.ConnectionPoolManager.getConnectionPool( ConnectionPoolManager.java:112) at com.wavesinmotion.cw.classes.jsphelpers.LoginServlet.isValid(LoginServle t.java:78) at com.wavesinmotion.cw.classes.jsphelpers.LoginServlet.doPost(LoginServlet .java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:193)