You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/12/06 00:58:14 UTC
svn commit: r1643474 - in /tomcat/trunk: java/org/apache/catalina/core/
test/org/apache/catalina/core/
Author: markt
Date: Fri Dec 5 23:58:13 2014
New Revision: 1643474
URL: http://svn.apache.org/r1643474
Log:
Revert r1643371 pending clarification from the Servlet EG re section 6.2.3 and threading requirements.
Disable associated test.
Modified:
tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java
tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties
tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties
tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties
tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java Fri Dec 5 23:58:13 2014
@@ -757,6 +757,17 @@ final class ApplicationDispatcher implem
runtimeException = e;
}
+ // Release the filter chain (if any) for this request
+ try {
+ if (filterChain != null)
+ filterChain.release();
+ } catch (Throwable e) {
+ ExceptionUtils.handleThrowable(e);
+ wrapper.getLogger().error(sm.getString("standardWrapper.releaseFilters",
+ wrapper.getName()), e);
+ // FIXME: Exception handling needs to be similar to what is in the StandardWrapperValue
+ }
+
// Deallocate the allocated servlet instance
try {
if (servlet != null) {
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterChain.java Fri Dec 5 23:58:13 2014
@@ -349,6 +349,30 @@ final class ApplicationFilterChain imple
/**
+ * Release references to the filters and wrapper executed by this chain.
+ */
+ void release() {
+
+ for (int i = 0; i < n; i++) {
+ filters[i] = null;
+ }
+ n = 0;
+ pos = 0;
+ servlet = null;
+ support = null;
+
+ }
+
+
+ /**
+ * Prepare for reuse of the filters and wrapper executed by this chain.
+ */
+ void reuse() {
+ pos = 0;
+ }
+
+
+ /**
* Set the servlet that will be executed at the end of this chain.
*
* @param servlet The Wrapper for the servlet to be executed
Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties Fri Dec 5 23:58:13 2014
@@ -186,6 +186,7 @@ standardWrapper.notClass=No servlet clas
standardWrapper.notContext=Parent container of a Wrapper must be a Context
standardWrapper.notFound=Servlet {0} is not available
standardWrapper.notServlet=Class {0} is not a Servlet
+standardWrapper.releaseFilters=Release filters exception for servlet {0}
standardWrapper.serviceException=Servlet.service() for servlet [{0}] in context with path [{1}] threw exception
standardWrapper.serviceExceptionRoot=Servlet.service() for servlet [{0}] in context with path [{1}] threw exception [{2}] with root cause
standardWrapper.unavailable=Marking servlet {0} as unavailable
Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties Fri Dec 5 23:58:13 2014
@@ -145,6 +145,7 @@ standardWrapper.notClass = No se ha espe
standardWrapper.notContext = El contenedor padre para un Arropador (Wrapper) debe de ser un Contexto
standardWrapper.notFound = No est\u00E1 disponible el Servlet {0}
standardWrapper.notServlet = La Clase {0} no es un Servlet
+standardWrapper.releaseFilters = Excepci\u00F3n de Liberaci\u00F3n de filtros para servlet {0}
standardWrapper.serviceException = Servlet.service() para servlet {0} lanz\u00F3 excepci\u00F3n
standardWrapper.serviceExceptionRoot = El Servlet.service() para el servlet [{0}] en el contexto con ruta [{1}] lanz\u00F3 la excepci\u00F3n [{2}] con causa ra\u00EDz
standardWrapper.unavailable = Marcando el servlet {0} como no disponible
Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties Fri Dec 5 23:58:13 2014
@@ -81,6 +81,7 @@ standardWrapper.notClass=Aucune classe s
standardWrapper.notContext=Le conteneur parent d''un enrobeur (wrapper) doit \u00eatre un contexte
standardWrapper.notFound=Servlet {0} n''est pas disponible.
standardWrapper.notServlet=La classe {0} n''est pas une servlet
+standardWrapper.releaseFilters=Exception des filtres de sortie (release filters) pour la servlet {0}
standardWrapper.serviceException="Servlet.service()" pour la servlet {0} a g\u00e9n\u00e9r\u00e9 une exception
standardWrapper.unavailable=La servlet {0} est marqu\u00e9 comme indisponible
standardWrapper.unloadException=La servlet {0} a g\u00e9n\u00e9r\u00e9 une exception "unload()"
Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties Fri Dec 5 23:58:13 2014
@@ -82,6 +82,7 @@ standardWrapper.notClass=\u30b5\u30fc\u3
standardWrapper.notContext=\u30e9\u30c3\u30d1\u306e\u89aa\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093
standardWrapper.notFound=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093
standardWrapper.notServlet=\u30af\u30e9\u30b9 {0} \u306f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u3067\u306f\u3042\u308a\u307e\u305b\u3093
+standardWrapper.releaseFilters=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u306e\u30d5\u30a3\u30eb\u30bf\u4f8b\u5916\u3092\u89e3\u9664\u3057\u307e\u3059
standardWrapper.serviceException=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u306eServlet.service()\u304c\u4f8b\u5916\u3092\u6295\u3052\u307e\u3057\u305f
standardWrapper.unavailable=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u3092\u5229\u7528\u4e0d\u53ef\u80fd\u306b\u30de\u30fc\u30af\u3057\u307e\u3059
standardWrapper.unloadException=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u304cunload()\u4f8b\u5916\u3092\u6295\u3052\u307e\u3057\u305f
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java Fri Dec 5 23:58:13 2014
@@ -251,6 +251,11 @@ final class StandardWrapperValve
exception(request, response, e);
}
+ // Release the filter chain (if any) for this request
+ if (filterChain != null) {
+ filterChain.release();
+ }
+
// Deallocate the allocated servlet instance
try {
if (servlet != null) {
Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java?rev=1643474&r1=1643473&r2=1643474&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java (original)
+++ tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterChain.java Fri Dec 5 23:58:13 2014
@@ -27,6 +27,7 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import org.apache.catalina.Context;
@@ -39,6 +40,7 @@ import org.apache.tomcat.util.descriptor
public class TestApplicationFilterChain extends TomcatBaseTest {
+ @Ignore // Appears to contradict Servlet 6.2.3
@Test
public void testBug57284() throws Exception {
Tomcat tomcat = getTomcatInstance();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org