diff --git a/core/src/main/java/org/springframework/security/util/FilterChainProxy.java b/core/src/main/java/org/springframework/security/util/FilterChainProxy.java index 9c3404c925..21975bfea4 100644 --- a/core/src/main/java/org/springframework/security/util/FilterChainProxy.java +++ b/core/src/main/java/org/springframework/security/util/FilterChainProxy.java @@ -78,13 +78,14 @@ import java.util.*; * javax.servlet.FilterChain)}, in that the remainder of the original or FilterChainProxy-declared filter * chain will not be called. * - *

It is particularly noted the Filter lifecycle mismatch between the servlet container and IoC - * container. As per {@link DelegatingFilterProxy} JavaDocs, we recommend you allow the IoC + *

Note the Filter lifecycle mismatch between the servlet container and IoC + * container. As described in the {@link DelegatingFilterProxy} JavaDocs, we recommend you allow the IoC * container to manage lifecycle instead of the servlet container. By default the DelegatingFilterProxy - * will never call this class' {@link #init(FilterConfig)} and {@link #destroy()} methods, meaning each of the filters - * defined in the filter chain map will not be called. If you do need your filters to be - * initialized and destroyed, please set the lifecycle initialization parameter against the - * DelegatingFilterProxy to specify servlet container lifecycle management. + * will never call this class' {@link #init(FilterConfig)} and {@link #destroy()} methods, which in turns means that + * the corresponding methods on the filter beans managed by this class will never be called. If you do need your filters to be + * initialized and destroyed, please set the targetFilterLifecycle initialization parameter against the + * DelegatingFilterProxy to specify that servlet container lifecycle management should be used. You don't + * need to worry about this in most cases. * * @author Carlos Sanchez * @author Ben Alex @@ -220,7 +221,7 @@ public class FilterChainProxy implements Filter, InitializingBean, ApplicationCo * Filter is defined multiples times in the filter chain map) */ protected Filter[] obtainAllDefinedFilters() { - Set allFilters = new HashSet(); + Set allFilters = new LinkedHashSet(); Iterator it = filterChainMap.values().iterator();