Author: markt
Date: Thu Feb  7 08:41:14 2013
New Revision: 1443352

URL: http://svn.apache.org/viewvc?rev=1443352&view=rev
Log:
Ensure that when loading Servlet instances the correct class loader is used.

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardWrapper.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1443350

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=1443352&r1=1443351&r2=1443352&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardWrapper.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/StandardWrapper.java Thu 
Feb  7 08:41:14 2013
@@ -588,13 +588,20 @@ public class StandardWrapper extends Con
         
         // The logic to determine this safely is more complex than one might
         // expect. allocate() already has the necessary logic so re-use it.
+        // Make sure the Servlet is loaded with the right class loader
+        ClassLoader old = Thread.currentThread().getContextClassLoader();
+        ClassLoader webappClassLoader =
+                ((Context) getParent()).getLoader().getClassLoader();
         try {
+            Thread.currentThread().setContextClassLoader(webappClassLoader);
             Servlet s = allocate();
             deallocate(s);
         } catch (Throwable t) {
             ExceptionUtils.handleThrowable(t);
+        } finally {
+            Thread.currentThread().setContextClassLoader(old);
         }
-        return (singleThreadModel);
+        return singleThreadModel;
 
     }
 

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1443352&r1=1443351&r2=1443352&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Thu Feb  7 08:41:14 2013
@@ -53,7 +53,16 @@
   They eventually become mixed with the numbered issues. (I.e., numbered
   issues to not "pop up" wrt. others).
 -->
-<section name="Tomcat 7.0.36 (markt)">
+<section name="Tomcat 7.0.37 (markt)">
+  <subsection name="Catalina">
+    <changelog>
+      <bug>54534</bug>: Ensure that, if a call to
+      <code>StandardWrapper#isSingleThreadModel()</code> triggers the loading 
of
+      a Servlet, the correct class loader is used. (markt)
+    </changelog>
+  </subsection>
+</section>
+<section name="Tomcat 7.0.36 (markt)" rtext="not released">
   <subsection name="Catalina">
     <changelog>
       <fix>



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

Reply via email to