Author: markt
Date: Sun Jul 31 19:34:14 2011
New Revision: 1152621

URL: http://svn.apache.org/viewvc?rev=1152621&view=rev
Log:
Ensure that calls to StandardWrapper methods() that may trigger creation of a 
Servlet instance always do so in way that correctly instantiates a Servlet 
instance.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=1152621&r1=1152620&r2=1152621&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Sun Jul 31 
19:34:14 2011
@@ -566,8 +566,18 @@ public class StandardWrapper extends Con
      */
     public boolean isSingleThreadModel() {
 
+        // Short-cuts
+        // If singleThreadModel is true, must have already checked this
+        // If instance != null, must have already loaded 
+        if (singleThreadModel || instance != null) {
+            return singleThreadModel;
+        }
+        
+        // The logic to determine this safely is more complex than one might
+        // expect. allocate() already has the necessary logic so re-use it.
         try {
-            loadServlet();
+            Servlet s = allocate();
+            deallocate(s);
         } catch (Throwable t) {
             ExceptionUtils.handleThrowable(t);
         }
@@ -608,7 +618,9 @@ public class StandardWrapper extends Con
     @Override
     public String[] getServletMethods() throws ServletException {
 
-        Class<? extends Servlet> servletClazz = loadServlet().getClass();
+        instance = loadServlet();
+        
+        Class<? extends Servlet> servletClazz = instance.getClass();
         if (!javax.servlet.http.HttpServlet.class.isAssignableFrom(
                                                         servletClazz)) {
             return DEFAULT_SERVLET_METHODS;

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1152621&r1=1152620&r2=1152621&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Sun Jul 31 19:34:14 2011
@@ -109,6 +109,11 @@
         <bug>51588</bug>: Make it easier to extend the AccessLogValve to add
         support for custom elements. (markt)
       </fix>
+      <fix>
+        Ensure that calls to StandardWrapper methods() that may trigger 
creation
+        of a Servlet instance always do so in way that correctly instantiates a
+        Servlet instance. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



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

Reply via email to