Author: markt
Date: Mon Dec 14 22:54:20 2009
New Revision: 890530

URL: http://svn.apache.org/viewvc?rev=890530&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47774
Ensure any session listeners are called with the Thread CCL set to the web 
application's class loader

Modified:
    tomcat/trunk/java/org/apache/catalina/connector/Request.java

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=890530&r1=890529&r2=890530&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Mon Dec 14 
22:54:20 2009
@@ -2181,11 +2181,29 @@
         } catch (IOException e) {
             // Can't find the session 
         }
-        if ((session != null) && session.isValid())
-            return (true);
-        else
-            return (false);
 
+        // The call to session.isValid() can trigger session listeners so make
+        // sure we are using the webapp's class loader in case the listeners 
are
+        // triggered
+        ClassLoader oldTccl = null;
+        if (context.getLoader() != null &&
+                context.getLoader().getClassLoader() != null) {
+            oldTccl = Thread.currentThread().getContextClassLoader();
+            Thread.currentThread().setContextClassLoader(
+                    context.getLoader().getClassLoader());
+        }
+
+        boolean result = false;
+        try {
+            if ((session != null) && session.isValid()) {
+                result = true;
+            }
+        } finally {
+            if (oldTccl != null) {
+                Thread.currentThread().setContextClassLoader(oldTccl);
+            }
+        }
+        return result;
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to