|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.acegisecurity.util.FilterChainProxy
public class FilterChainProxy
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() 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.
If a filter name of TOKEN_NONE is used, this allows specification of a filter pattern which should
never cause any filters to fire.
| Field Summary | |
|---|---|
static String |
TOKEN_NONE
|
| Constructor Summary | |
|---|---|
FilterChainProxy()
|
|
| Method Summary | |
|---|---|
void |
afterPropertiesSet()
|
void |
destroy()
|
void |
doFilter(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain chain)
|
FilterInvocationDefinitionSource |
getFilterInvocationDefinitionSource()
|
void |
init(javax.servlet.FilterConfig filterConfig)
|
protected javax.servlet.Filter[] |
obtainAllDefinedFilters()
Obtains all of the unique Filter instances registered against the
FilterInvocationDefinitionSource. |
void |
setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
|
void |
setFilterInvocationDefinitionSource(FilterInvocationDefinitionSource filterInvocationDefinitionSource)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final String TOKEN_NONE
| Constructor Detail |
|---|
public FilterChainProxy()
| Method Detail |
|---|
public void afterPropertiesSet()
throws Exception
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanExceptionpublic void destroy()
destroy in interface javax.servlet.Filter
public void doFilter(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain chain)
throws IOException,
javax.servlet.ServletException
doFilter in interface javax.servlet.FilterIOException
javax.servlet.ServletExceptionpublic FilterInvocationDefinitionSource getFilterInvocationDefinitionSource()
public void init(javax.servlet.FilterConfig filterConfig)
throws javax.servlet.ServletException
init in interface javax.servlet.Filterjavax.servlet.ServletExceptionprotected javax.servlet.Filter[] obtainAllDefinedFilters()
Filter instances registered against the
FilterInvocationDefinitionSource.This is useful in ensuring a Filter is not
initialized or destroyed twice.
Filter instances in the application context for which there has been an entry
against the FilterInvocationDefinitionSource (only one entry is included in the array for
each Filter that actually exists in application context, even if a given
Filter is defined multiples times by the FilterInvocationDefinitionSource)
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
throws org.springframework.beans.BeansException
setApplicationContext in interface org.springframework.context.ApplicationContextAwareorg.springframework.beans.BeansExceptionpublic void setFilterInvocationDefinitionSource(FilterInvocationDefinitionSource filterInvocationDefinitionSource)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||