Author: cziegeler
Date: Thu Oct 2 12:00:46 2014
New Revision: 1628954
URL: http://svn.apache.org/r1628954
Log:
SLING-3984 : JSP Compilation failure under heavy load
Modified:
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
Modified:
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java?rev=1628954&r1=1628953&r2=1628954&view=diff
==============================================================================
---
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
(original)
+++
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
Thu Oct 2 12:00:46 2014
@@ -153,6 +153,7 @@ public class JspScriptEngineFactory
/**
* @see javax.script.ScriptEngineFactory#getScriptEngine()
*/
+ @Override
public ScriptEngine getScriptEngine() {
return new JspScriptEngine();
}
@@ -160,6 +161,7 @@ public class JspScriptEngineFactory
/**
* @see javax.script.ScriptEngineFactory#getLanguageName()
*/
+ @Override
public String getLanguageName() {
return "Java Server Pages";
}
@@ -167,6 +169,7 @@ public class JspScriptEngineFactory
/**
* @see javax.script.ScriptEngineFactory#getLanguageVersion()
*/
+ @Override
public String getLanguageVersion() {
return "2.1";
}
@@ -294,9 +297,17 @@ public class JspScriptEngineFactory
if ( wrapper.isValid() ) {
return wrapper;
}
- rctxt.removeWrapper(wrapper.getJspUri());
- this.renewJspRuntimeContext();
- rctxt = this.getJspRuntimeContext();
+ synchronized ( this ) {
+ rctxt = this.getJspRuntimeContext();
+ wrapper = rctxt.getWrapper(scriptName);
+ if ( wrapper != null ) {
+ if ( wrapper.isValid() ) {
+ return wrapper;
+ }
+ this.renewJspRuntimeContext();
+ rctxt = this.getJspRuntimeContext();
+ }
+ }
}
wrapper = new JspServletWrapper(servletConfig, options,
@@ -509,6 +520,7 @@ public class JspScriptEngineFactory
super(JspScriptEngineFactory.this);
}
+ @Override
public Object eval(final Reader script, final ScriptContext context)
throws ScriptException {
Bindings props = context.getBindings(ScriptContext.ENGINE_SCOPE);
@@ -610,6 +622,7 @@ public class JspScriptEngineFactory
/**
* @see
org.osgi.service.event.EventHandler#handleEvent(org.osgi.service.event.Event)
*/
+ @Override
public void handleEvent(final Event event) {
final String path =
(String)event.getProperty(SlingConstants.PROPERTY_PATH);
if ( path != null ) {
@@ -647,6 +660,7 @@ public class JspScriptEngineFactory
/* (non-Javadoc)
* @see javax.servlet.Servlet#destroy()
*/
+ @Override
public void destroy() {
this.config = null;
}
@@ -654,6 +668,7 @@ public class JspScriptEngineFactory
/* (non-Javadoc)
* @see javax.servlet.Servlet#getServletConfig()
*/
+ @Override
public ServletConfig getServletConfig() {
return this.config;
}
@@ -661,6 +676,7 @@ public class JspScriptEngineFactory
/* (non-Javadoc)
* @see javax.servlet.Servlet#getServletInfo()
*/
+ @Override
public String getServletInfo() {
return "";
}
@@ -668,6 +684,7 @@ public class JspScriptEngineFactory
/* (non-Javadoc)
* @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
*/
+ @Override
public void init(final ServletConfig config) throws ServletException {
this.config = config;
}
@@ -675,6 +692,7 @@ public class JspScriptEngineFactory
/* (non-Javadoc)
* @see javax.servlet.Servlet#service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse)
*/
+ @Override
public void service(final ServletRequest request, final ServletResponse
response)
throws ServletException, IOException {
if ( request instanceof HttpServletRequest ) {
Modified:
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java?rev=1628954&r1=1628953&r2=1628954&view=diff
==============================================================================
---
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
(original)
+++
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
Thu Oct 2 12:00:46 2014
@@ -316,10 +316,10 @@ public final class JspRuntimeContext {
* Remove a JspServletWrapper.
*
* @param jspUri JSP URI of JspServletWrapper to remove
- */
public void removeWrapper(String jspUri) {
jsps.remove(jspUri);
}
+ */
/**
* Process a "destroy" event for this web application context.