In order for me to get the deploy/undeploy manager functionality in tomcat to work, I have to run it with the host setting of unpacking set to false. This creates an issue in the VelocityManager. In the code (around line 153), context.getRealPath is called (several times). The servlet spec, though, specifies that the app server "must return null" for these methods if the servlet is being executed from an archive (section SRV.4.5). Now this all happens in a try catch block. However, when you construct a File with null you get a NullPointerException (not the IOException that is caught). As a result, the whole app crashes. I've put the stack trace below. However, this could be easily fixed by catching the npe. Alternatively, depending on the getRealPath method anywhere in the servlet is a bad idea. So, it should be replaced with getResource with everything in the class path. That is, unless, someone can tell me a reliable mechanism for getting actual file system paths in an archived servlet (would love to know this :)).
Thanx, LES //====================================================================== = // Stack Trace //====================================================================== = 2003-06-07 16:21:41 StandardWrapperValve[webwork]: Allocate exception for servlet webwork javax.servlet.ServletException: Servlet.init() for servlet webwork threw exception at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.jav a:963) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:6 68) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:210) 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.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:171) 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:59 4) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC onnection(Http11Protocol.java:392) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:56 5) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:619) at java.lang.Thread.run(Thread.java:536) ----- Root Cause ----- java.lang.NullPointerException at java.io.File.<init>(File.java:180) at com.opensymphony.webwork.views.velocity.VelocityManager.loadConfiguratio n(VelocityManager.java:153) at com.opensymphony.webwork.views.velocity.VelocityManager.newVelocityEngin e(VelocityManager.java:240) at com.opensymphony.webwork.views.velocity.VelocityManager.init(VelocityMan ager.java:106) at com.opensymphony.webwork.dispatcher.ServletDispatcher.init(ServletDispat cher.java:62) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.jav a:935) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:6 68) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:210) 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.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:171) 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:59 4) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC onnection(Http11Protocol.java:392) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:56 5) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:619) at java.lang.Thread.run(Thread.java:536) -----Original Message----- From: Mike Cannon-Brookes [mailto:[EMAIL PROTECTED] Sent: Friday, June 06, 2003 9:21 PM To: [EMAIL PROTECTED] Subject: Re: [OS-webwork] Request to core developers Erik, OK - good idea. Any particular issues you want to point us at? M On 6/6/03 10:21 PM, "Erik Beeson" ([EMAIL PROTECTED]) penned the words: > It would be nice if the core developers could make comments on JIRA issues > as they come in. I'm fairly familiar with the codebase as I've been > involved with it from the start, and it would be easy for me to fix a lot > of the issues in JIRA, but I'm always afraid that a proposed solution > isn't a good one, or that some other thing in development will fix a > particular issue or something like that. It would be nice if issues had a > little comment, "This looks good" "Let's rethink this" "This isn't a good > idea", etc. Then anybody who knows the code can jump in anywhere without > worrying about breaking things. > > Because I'm sure the core team doesn't have enough to do ;) > > --Erik > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Etnus, makers of TotalView, The best > thread debugger on the planet. Designed with thread debugging features > you've never dreamed of, try TotalView 6 free at www.etnus.com. > _______________________________________________ > Opensymphony-webwork mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork