Return-Path: Delivered-To: apmail-geronimo-dev-archive@www.apache.org Received: (qmail 16571 invoked from network); 18 Dec 2005 14:09:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 18 Dec 2005 14:09:01 -0000 Received: (qmail 49806 invoked by uid 500); 18 Dec 2005 14:09:00 -0000 Delivered-To: apmail-geronimo-dev-archive@geronimo.apache.org Received: (qmail 49104 invoked by uid 500); 18 Dec 2005 14:08:58 -0000 Mailing-List: contact dev-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list dev@geronimo.apache.org Received: (qmail 49092 invoked by uid 99); 18 Dec 2005 14:08:57 -0000 X-ASF-Spam-Status: No, hits=1.3 required=10.0 tests=SPF_FAIL X-Spam-Check-By: apache.org Received: from [192.87.106.226] (HELO ajax.apache.org) (192.87.106.226) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 18 Dec 2005 06:08:57 -0800 Received: from ajax.apache.org (ajax.apache.org [127.0.0.1]) by ajax.apache.org (Postfix) with ESMTP id C84CACB for ; Sun, 18 Dec 2005 15:08:35 +0100 (CET) Message-ID: <1667293770.1134914915818.JavaMail.jira@ajax.apache.org> Date: Sun, 18 Dec 2005 15:08:35 +0100 (CET) From: "anita kulshreshtha (JIRA)" To: dev@geronimo.apache.org Subject: [jira] Commented: (GERONIMO-1378) Bad application web.xml makes digester go crazy In-Reply-To: <912392011.1134765645646.JavaMail.jira@ajax.apache.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N [ http://issues.apache.org/jira/browse/GERONIMO-1378?page=comments#action_12360717 ] anita kulshreshtha commented on GERONIMO-1378: ---------------------------------------------- I think it is a very common mistake to specify bad class name either because of typo or cut-and-paste. Until GERONIMO-1035 is finished, TomcatModuleBuilder could catch this and avoid the stack trace. In Jetty, this error is caught because Jetty needs to load the servlet for further processing, not because it is trying to validate the web.xml. IMHO, a simple parse error is much more user friendly. I think we should do it because it can be easily done, and the other container does not behave the same way. Once this error is caught, the deployment is aborted. This web.xml will not be released to Tomcat. > Bad application web.xml makes digester go crazy > ----------------------------------------------- > > Key: GERONIMO-1378 > URL: http://issues.apache.org/jira/browse/GERONIMO-1378 > Project: Geronimo > Type: Bug > Components: Tomcat > Versions: 1.0-M5 > Environment: all > Reporter: anita kulshreshtha > Priority: Minor > > This trace is produced when the element has a non-existent class name: > 11:49:15,484 ERROR [ContextConfig] Parse error in application web.xml > java.lang.RuntimeException: org.apache.catalina.manager.JMXProxyServlet > at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719) > at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2745) > at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1060) > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) > at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) > at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) > at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561) > at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:339) > at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1031) > at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:255) > at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) > at org.apache.catalina.core.StandardContext.start(StandardContext.java:4076) > at org.apache.geronimo.tomcat.GeronimoStandardContext.access$101(GeronimoStandardContext.java:64) > at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:267) > at org.apache.geronimo.tomcat.valve.TransactionContextValve.invoke(TransactionContextValve.java:53) > at org.apache.geronimo.tomcat.valve.ComponentContextValve.invoke(ComponentContextValve.java:47) > at org.apache.geronimo.tomcat.valve.InstanceContextValve.invoke(InstanceContextValve.java:60) > at org.apache.geronimo.tomcat.GeronimoStandardContext.start(GeronimoStandardContext.java:187) > at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759) > at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739) > at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524) > at org.apache.geronimo.tomcat.TomcatContainer.addContext(TomcatContainer.java:287) > at org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke() > at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) > at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) > at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118) > at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800) > at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) > at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36) > at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) > at org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$7af7fb0d.addContext() > at org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:407) > at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:936) > at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:325) > at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:110) > at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:132) > at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:537) > at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:208) > at org.apache.geronimo.kernel.config.Configuration.startRecursiveGBeans(Configuration.java:315) > at org.apache.geronimo.kernel.config.Configuration$$FastClassByCGLIB$$7f4b4a9b.invoke() > at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) > at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) > at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118) > at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:835) > at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:178) > at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:173) > at org.apache.geronimo.kernel.config.ConfigurationManagerImpl.start(ConfigurationManagerImpl.java:142) > at org.apache.geronimo.kernel.config.ConfigurationManagerImpl$$FastClassByCGLIB$$fbed85d2.invoke() > at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) > at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) > at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118) > at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800) > at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) > at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36) > at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) > at org.apache.geronimo.kernel.config.ConfigurationManager$$EnhancerByCGLIB$$259d7f0a.start() > at org.apache.geronimo.console.configmanager.DeploymentPortlet.processAction(DeploymentPortlet.java:126) > at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:229) > at org.apache.pluto.core.PortletServlet.doPost(PortletServlet.java:163) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:615) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) > at org.apache.pluto.core.PortletServlet.service(PortletServlet.java:153) > 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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) > at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) > at org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:120) > at org.apache.pluto.invoker.impl.PortletInvokerImpl.action(PortletInvokerImpl.java:68) > at org.apache.pluto.PortletContainerImpl.processPortletAction(PortletContainerImpl.java:164) > at org.apache.pluto.portalImpl.core.PortletContainerWrapperImpl.processPortletAction(PortletContainerWrapperImpl > .java:82) > at org.apache.pluto.portalImpl.Servlet.doGet(Servlet.java:227) > at org.apache.pluto.portalImpl.Servlet.doPost(Servlet.java:267) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:615) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) > 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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:514) > at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:272) > at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:46) > at org.apache.geronimo.tomcat.valve.PolicyContextValve.invoke(PolicyContextValve.java:50) > at org.apache.geronimo.tomcat.valve.TransactionContextValve.invoke(TransactionContextValve.java:53) > at org.apache.geronimo.tomcat.valve.ComponentContextValve.invoke(ComponentContextValve.java:47) > at org.apache.geronimo.tomcat.valve.InstanceContextValve.invoke(InstanceContextValve.java:60) > 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.valves.AccessLogValve.invoke(AccessLogValve.java:541) > at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) > at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868) > at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java > :663) > 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:534) > 11:49:15,484 ERROR [ContextConfig] Occurred at line 5 column 13 > 11:49:15,484 ERROR [ContextConfig] Marking this application unavailable due to previous error(s) > 11:49:15,484 ERROR [StandardContext] Error getConfigured > 11:49:15,484 ERROR [StandardContext] Context [/hello] startup failed due to previous errors > 12:00:26,734 INFO [StandardContext] Container org.apache.catalina.core.ContainerBase.[/hello] has not been started > java.io.FileNotFoundException > at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:297) > at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:352) > at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:315) > at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:560) > at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) > 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.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:272) > at org.apache.geronimo.tomcat.valve.TransactionContextValve.invoke(TransactionContextValve.java:53) > at org.apache.geronimo.tomcat.valve.ComponentContextValve.invoke(ComponentContextValve.java:47) > at org.apache.geronimo.tomcat.valve.InstanceContextValve.invoke(InstanceContextValve.java:60) > 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.valves.AccessLogValve.invoke(AccessLogValve.java:541) > at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) > at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868) > at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java > :663) > 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:534) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira