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