Author: cziegeler
Date: Tue Aug 10 11:43:45 2010
New Revision: 983940

URL: http://svn.apache.org/viewvc?rev=983940&view=rev
Log:
SLING-1638 : Reload jsp if used classloader is invalid

Modified:
    sling/trunk/bundles/scripting/jsp/pom.xml
    
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java

Modified: sling/trunk/bundles/scripting/jsp/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/pom.xml?rev=983940&r1=983939&r2=983940&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/pom.xml (original)
+++ sling/trunk/bundles/scripting/jsp/pom.xml Tue Aug 10 11:43:45 2010
@@ -122,7 +122,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.classloader</artifactId>
-            <version>1.0.0</version>
+            <version>1.1.5-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

Modified: 
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java?rev=983940&r1=983939&r2=983940&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
 (original)
+++ 
sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/servlet/JspServletWrapper.java
 Tue Aug 10 11:43:45 2010
@@ -35,6 +35,7 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.sling.api.SlingException;
 import org.apache.sling.api.scripting.ScriptEvaluationException;
+import org.apache.sling.commons.classloader.DynamicClassLoader;
 import org.apache.sling.scripting.jsp.jasper.JasperException;
 import org.apache.sling.scripting.jsp.jasper.JspCompilationContext;
 import org.apache.sling.scripting.jsp.jasper.Options;
@@ -77,7 +78,7 @@ public class JspServletWrapper {
     private ServletConfig config;
     private Options options;
     private boolean firstTime = true;
-    private boolean reload = true;
+    private volatile boolean reload = true;
     private boolean isTagFile;
     private int tripCount;
     private JasperException compileException;
@@ -131,6 +132,12 @@ public class JspServletWrapper {
     public Servlet getServlet()
         throws ServletException, IOException, FileNotFoundException
     {
+        // check if the used class loader is still alive
+        if (!reload) {
+            if ( servletClass.getClassLoader() instanceof DynamicClassLoader ) 
{
+                reload = 
!((DynamicClassLoader)servletClass.getClassLoader()).isLive();
+            }
+        }
         if (reload) {
             synchronized (this) {
                 // Synchronizing on jsw enables simultaneous loading


Reply via email to