Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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 `Filter`s that apply to that request. NB: This means you must put most specific URI patterns at the top of the list, and ensure all `Filter`s 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 `Filter`s. 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 `Filter`s 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

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)`
`void` | `setApplicationContext(ApplicationContext applicationContext)`
`void` | `setFilterInvocationDefinitionSource(FilterInvocationDefinitionSource filterInvocationDefinitionSource)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### FilterChainProxy

    public FilterChainProxy()

Method Detail

### 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`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2004-2005 Acegi Technology Pty Limited. All Rights Reserved.