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