Ошибка создания компонента с именем _filterChainProxy: сбой инициализации компонента;вложенным исключением является java.lang.NullPointerException - PullRequest
1 голос
/ 17 сентября 2010

applicationContext.xml:

<bean id="defaultEntryPoint" class="com.spsetia.companyapp.company.services.CustomAuthenticationEntryPoint">
    <property name="securityConfiguration" ref="securityConfiguration" />
    <!-- Default filter chain proxy -->
    <property name="proxy" ref="_filterChainProxy" />
</bean>

web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml
    </param-value>
  </context-param>
 <filter>
    <filter-name>redirect</filter-name>
    <filter-class>org.apache.tapestry.RedirectFilter</filter-class>
  </filter>
 <filter-mapping>
    <filter-name>redirect</filter-name>
    <url-pattern>/</url-pattern>
  </filter-mapping>
 <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
 <filter>
  <filter-name>_filterChainProxy</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>_filterChainProxy</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
    <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>
  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>
      org.apache.tapestry.ApplicationServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

Но я получаю эту ошибку:

org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем '_filterChainList': не удалось разрешить ссылку на bean-компонент '_exceptionTranslationFilter' при установке свойства bean-компонента 'filters' с ключом [2];вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем '_exceptionTranslationFilter': инициализация компонента не выполнена;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'defaultEntryPoint', определенным в ресурсе ServletContext [/WEB-INF/applicationContext.xml]: невозможно разрешить ссылку на компонент _filterChainProxy компонента при настройке прокси-компонента свойства bean«;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем '_filterChainProxy': инициализация компонента не выполнена;Вложенное исключение - java.lang.NullPointerException

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2010
FilterChainList filterList = (FilterChainList) 
    beanFactory.getBean(BeanIds.FILTER_LIST);

List filters = new ArrayList(filterList.getFilters());

Эти строки - проблема. Это означает, что для bean-компонента с именем _filterChainList (значение вышеуказанной константы) должен быть определен набор фильтров.

0 голосов
/ 17 сентября 2010

Похоже, вы используете SpringSecurity 2.0.x или 2.5.x. Класс FilterChainProxyPostProcessor не существует в кодовой базе 3.0.x.

Немного покопавшись, я нашел код, в котором, похоже, возникло ваше исключение:

public Object postProcessBeforeInitialization(Object bean, String beanName) 
throws BeansException {
    if(!BeanIds.FILTER_CHAIN_PROXY.equals(beanName)) {
        return bean;
    }

    FilterChainProxy filterChainProxy = (FilterChainProxy) bean;
    FilterChainList filterList = 
        (FilterChainList) beanFactory.getBean(BeanIds.FILTER_LIST);

    List filters = new ArrayList(filterList.getFilters());
    Collections.sort(filters, new OrderComparator());

Мой диагноз состоит в том, что NPE выбрасывается в строку, которая создает ArrayList, и это из-за того, что filterList.getFilters() возвращает null. Похоже, причина в том, что bean-компонент "_filterChainList" не был правильно инициализирован.

Я не знаю, как и где это следует инициализировать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...