From: markt Date: Fri, 17 Jul 2009 20:12:49 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=41661 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=897cd239454a0caf08f03e5128af13aabb309460;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=41661 Thread safety issue with JspConfig.init(). There is one JspConfig object per context and as per 41661, issues have been seen with this on real systems. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@795210 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/jasper/compiler/JspConfig.java b/java/org/apache/jasper/compiler/JspConfig.java index 5dd3e2bc2..8982a25d4 100644 --- a/java/org/apache/jasper/compiler/JspConfig.java +++ b/java/org/apache/jasper/compiler/JspConfig.java @@ -48,7 +48,7 @@ public class JspConfig { private Vector jspProperties = null; private ServletContext ctxt; - private boolean initialized = false; + private volatile boolean initialized = false; private String defaultIsXml = null; // unspecified private String defaultIsELIgnored = null; // unspecified @@ -218,13 +218,17 @@ public class JspConfig { private void init() throws JasperException { if (!initialized) { - processWebDotXml(ctxt); - defaultJspProperty = new JspProperty(defaultIsXml, - defaultIsELIgnored, - defaultIsScriptingInvalid, - null, null, null, defaultDeferedSyntaxAllowedAsLiteral, - defaultTrimDirectiveWhitespaces); - initialized = true; + synchronized (this) { + if (!initialized) { + processWebDotXml(ctxt); + defaultJspProperty = new JspProperty(defaultIsXml, + defaultIsELIgnored, + defaultIsScriptingInvalid, + null, null, null, defaultDeferedSyntaxAllowedAsLiteral, + defaultTrimDirectiveWhitespaces); + initialized = true; + } + } } }