Author: markt Date: Mon Jun 20 19:26:45 2011 New Revision: 1137753 URL: http://svn.apache.org/viewvc?rev=1137753&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51395 Fix memory leak triggered when an application that includes a SAXParserFactory is the first web application to be loaded.
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1137753&r1=1137752&r2=1137753&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Mon Jun 20 19:26:45 2011 @@ -229,6 +229,32 @@ public class ContextConfig new LoginConfig("NONE", null, null, null); + static { + webDigesters[0] = DigesterFactory.newDigester(false, false, webRuleSet); + webDigesters[0].getParser(); + webFragmentDigesters[0] = DigesterFactory.newDigester(false, false, + webFragmentRuleSet); + webFragmentDigesters[0].getParser(); + + webDigesters[1] = DigesterFactory.newDigester(true, false, webRuleSet); + webDigesters[1].getParser(); + webFragmentDigesters[1] = DigesterFactory.newDigester(true, false, + webFragmentRuleSet); + webFragmentDigesters[1].getParser(); + + webDigesters[2] = DigesterFactory.newDigester(false, true, webRuleSet); + webDigesters[2].getParser(); + webFragmentDigesters[2] = DigesterFactory.newDigester(false, true, + webFragmentRuleSet); + webFragmentDigesters[2].getParser(); + + webDigesters[3] = DigesterFactory.newDigester(true, true, webRuleSet); + webDigesters[3].getParser(); + webFragmentDigesters[3] = DigesterFactory.newDigester(true, true, + webFragmentRuleSet); + webFragmentDigesters[3].getParser(); + } + // ------------------------------------------------------------- Properties @@ -475,46 +501,22 @@ public class ContextConfig * Create (if necessary) and return a Digester configured to process the * web application deployment descriptor (web.xml). */ - public void createWebXmlDigester(boolean namespaceAware, + protected void createWebXmlDigester(boolean namespaceAware, boolean validation) { if (!namespaceAware && !validation) { - if (webDigesters[0] == null) { - webDigesters[0] = DigesterFactory.newDigester(validation, - namespaceAware, webRuleSet); - webFragmentDigesters[0] = DigesterFactory.newDigester(validation, - namespaceAware, webFragmentRuleSet); - } webDigester = webDigesters[0]; webFragmentDigester = webFragmentDigesters[0]; } else if (!namespaceAware && validation) { - if (webDigesters[1] == null) { - webDigesters[1] = DigesterFactory.newDigester(validation, - namespaceAware, webRuleSet); - webFragmentDigesters[1] = DigesterFactory.newDigester(validation, - namespaceAware, webFragmentRuleSet); - } webDigester = webDigesters[1]; webFragmentDigester = webFragmentDigesters[1]; } else if (namespaceAware && !validation) { - if (webDigesters[2] == null) { - webDigesters[2] = DigesterFactory.newDigester(validation, - namespaceAware, webRuleSet); - webFragmentDigesters[2] = DigesterFactory.newDigester(validation, - namespaceAware, webFragmentRuleSet); - } webDigester = webDigesters[2]; webFragmentDigester = webFragmentDigesters[2]; } else { - if (webDigesters[3] == null) { - webDigesters[3] = DigesterFactory.newDigester(validation, - namespaceAware, webRuleSet); - webFragmentDigesters[3] = DigesterFactory.newDigester(validation, - namespaceAware, webFragmentRuleSet); - } webDigester = webDigesters[3]; webFragmentDigester = webFragmentDigesters[3]; } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1137753&r1=1137752&r2=1137753&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon Jun 20 19:26:45 2011 @@ -85,6 +85,11 @@ include leading zeros and formatting any parameters present. (kolinko/markt) </fix> + <fix> + <bug>51395</bug>: Fix memory leak triggered when an application that + includes a SAXParserFactory is the first web application to be loaded. + (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org