org.acegisecurity.util
Class FilterChainProxy
java.lang.Object
org.acegisecurity.util.FilterChainProxy
- All Implemented Interfaces:
- javax.servlet.Filter, InitializingBean, ApplicationContextAware
public class FilterChainProxy
- extends Object
- implements javax.servlet.Filter, InitializingBean, ApplicationContextAware
Delegates Filter requests to a list of Spring-managed beans.
The FilterChainProxy is loaded via a standard FilterToBeanProxy declaration in
web.xml. FilterChainProxy will then pass init(FilterConfig), destroy(), #doInit() and doFilter(ServletRequest, ServletResponse, FilterChain) invocations
through to each Filter defined against
FilterChainProxy.
FilterChainProxy is configured using a standard FilterInvocationDefinitionSource. Each
possible URI pattern that FilterChainProxy should service must
be entered. The first matching URI pattern located by
FilterInvocationDefinitionSource for a given request will be
used to define all of the Filters that apply to that request.
NB: This means you must put most specific URI patterns at the top of the
list, and ensure all Filters that should apply for a given URI
pattern are entered against the respective entry. The
FilterChainProxy will not iterate the remainder of the URI
patterns to locate additional Filters. The
FilterInvocationDefinitionSource described the applicable URI
pattern to fire the filter chain, followed by a list of configuration
attributes. Each configuration attribute's ConfigAttribute.getAttribute() corresponds to a bean
name that is available from the application context.
FilterChainProxy respects normal handling of
Filters that elect not to call Filter.doFilter(javax.servlet.ServletRequest,
javax.servlet.ServletResponse, javax.servlet.FilterChain), in that the
remainder of the origial 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 FilterToBeanProxy JavaDocs, we recommend you
allow the IoC container to manage lifecycle instead of the servlet
container. By default the FilterToBeanProxy will never call
this class' init(FilterConfig) and destroy() methods,
meaning each of the filters defined against
FilterInvocationDefinitionSource will not be called. If you do
need your filters to be initialized and destroyed, please set the
lifecycle initialization parameter against the
FilterToBeanProxy to specify servlet container lifecycle
management.
- Version:
- $Id: FilterChainProxy.java,v 1.6 2005/11/17 00:56:09 benalex Exp $
- Author:
- Carlos Sanchez, Ben Alex
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
FilterChainProxy
public FilterChainProxy()
setApplicationContext
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException
- Specified by:
setApplicationContext in interface ApplicationContextAware
- Throws:
BeansException
setFilterInvocationDefinitionSource
public void setFilterInvocationDefinitionSource(FilterInvocationDefinitionSource filterInvocationDefinitionSource)
getFilterInvocationDefinitionSource
public FilterInvocationDefinitionSource getFilterInvocationDefinitionSource()
afterPropertiesSet
public void afterPropertiesSet()
throws Exception
- Specified by:
afterPropertiesSet in interface InitializingBean
- Throws:
Exception
destroy
public void destroy()
- Specified by:
destroy in interface javax.servlet.Filter
doFilter
public void doFilter(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain chain)
throws IOException,
javax.servlet.ServletException
- Specified by:
doFilter in interface javax.servlet.Filter
- Throws:
IOException
javax.servlet.ServletException
init
public void init(javax.servlet.FilterConfig filterConfig)
throws javax.servlet.ServletException
- Specified by:
init in interface javax.servlet.Filter
- Throws:
javax.servlet.ServletException
Copyright © 2004-2005 Acegi Technology Pty Limited. All Rights Reserved.