A misconfigured server will cause the following: java.lang.NullPointerException at org.apache.catalina.startup.DigesterFactory.register (DigesterFactory.java:174) at org.apache.catalina.startup.DigesterFactory.registerLocalSchema (DigesterFactory.java:139) at org.apache.catalina.startup.DigesterFactory.newDigester (DigesterFactory.java:92) at org.apache.catalina.startup.ContextConfig.createWebXmlDigester (ContextConfig.java:435) ... The defect occurs because a resource is loaded from the ClassLoader and is never checked for null. Lines 173 - 174 of org.apache.catalina.startup.DigesterFactory should be changed to: URL url = DigesterFactory.class.getResource(resourceURL); if(url == null) throw new WhateverIsAnAppropriateException(<"The resource identified by \"" + resourceURL + "\" does not exist.">); /* else -- the URL for the resource exists */ schemaResolver.register(resourcePublicId , url.toString() ); where the text in <>'s is replaced with the appropriate resource bundle mechanism. I would recommend that a code audit is performed to determine other such uses of getResource(), getResourceAsStream(), etc without appropriate null checks to ensure a consistent and pleasant user experience.
Added Log and NPE checking to DigesterFactory. Thanks.