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: [email protected]
For additional commands, e-mail: [email protected]