From: remm Date: Thu, 17 Aug 2006 13:22:44 +0000 (+0000) Subject: - Calling allocate for no reason was not a very good idea (adding an accessor instead... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=e3015e0c341e2811c924baf19cc542dd9c44ad31;p=tomcat7.0 - Calling allocate for no reason was not a very good idea (adding an accessor instead for now, bleh). - Simplify the event method. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@432230 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/Wrapper.java b/java/org/apache/catalina/Wrapper.java index 8950c27a1..357cf5176 100644 --- a/java/org/apache/catalina/Wrapper.java +++ b/java/org/apache/catalina/Wrapper.java @@ -217,6 +217,12 @@ public interface Wrapper extends Container { /** + * Return the associated servlet instance. + */ + public Servlet getServlet(); + + + /** * Return the value for the specified initialization parameter name, * if any; otherwise return null. * diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 4b087cda0..415855fcd 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -19,6 +19,8 @@ package org.apache.catalina.connector; import java.io.IOException; +import javax.servlet.Servlet; + import org.apache.catalina.CometProcessor; import org.apache.catalina.Context; import org.apache.catalina.Globals; @@ -117,25 +119,16 @@ public class CoyoteAdapter if (request.getWrapper() != null) { + CometProcessor servlet = null; + // Bind the context CL to the current thread if (request.getContext().getLoader() != null ) { Thread.currentThread().setContextClassLoader (request.getContext().getLoader().getClassLoader()); } - CometProcessor servlet = null; try { servlet = (CometProcessor) request.getWrapper().allocate(); - } catch (Throwable t) { - log.error(sm.getString("coyoteAdapter.service"), t); - request.recycle(); - response.recycle(); - // Restore the context classloader - Thread.currentThread().setContextClassLoader - (CoyoteAdapter.class.getClassLoader()); - return false; - } - try { if (error) { servlet.error(request.getRequest(), response.getResponse()); } else { @@ -167,6 +160,11 @@ public class CoyoteAdapter // Restore the context classloader Thread.currentThread().setContextClassLoader (CoyoteAdapter.class.getClassLoader()); + try { + request.getWrapper().deallocate((Servlet) servlet); + } catch (Exception e) { + log.error(sm.getString("coyoteAdapter.service"), e); + } // Recycle the wrapper request and response if (error || response.isClosed()) { request.recycle(); @@ -225,7 +223,7 @@ public class CoyoteAdapter connector.getContainer().getPipeline().getFirst().invoke(request, response); } - if (request.getWrapper().allocate() instanceof CometProcessor + if (request.getWrapper().getServlet() instanceof CometProcessor && !response.isClosed()) { comet = true; res.action(ActionCode.ACTION_COMET_BEGIN, null); diff --git a/java/org/apache/catalina/core/StandardWrapper.java b/java/org/apache/catalina/core/StandardWrapper.java index 4c53b17bd..cedf30091 100644 --- a/java/org/apache/catalina/core/StandardWrapper.java +++ b/java/org/apache/catalina/core/StandardWrapper.java @@ -750,6 +750,14 @@ public class StandardWrapper /** + * Return the associated servlet instance. + */ + public Servlet getServlet() { + return instance; + } + + + /** * Allocate an initialized instance of this Servlet that is ready to have * its service() method called. If the servlet class does * not implement SingleThreadModel, the (only) initialized