Spring + Wicket + Tomcat: программа не запускается из-за IllegalArgumentException - PullRequest
0 голосов
/ 22 декабря 2011

У меня проблема при попытке развернуть мою WAR в tomcat.Программа представляет собой приложение Wicket + Spring, которое использует подход, основанный на аннотациях, https://cwiki.apache.org/WICKET/spring.html#Spring-AnnotationbasedApproach, для загрузки / создания бобов Spring.Tomcat не может загрузить приложение из-за этой ошибки

SEVERE: Exception starting filter WicketFilter
java.lang.IllegalArgumentException: ListableBeanFactory must not be null
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:273)
at org.apache.wicket.spring.SpringWebApplicationFactory.createApplication(SpringWebApplicationFactory.java:160)
at org.apache.wicket.spring.SpringWebApplicationFactory.createApplication(SpringWebApplicationFactory.java:143)
at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:708)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Это сводит меня с ума, и я искал на форумах wicket + spring и stackoverflow аналогичные проблемы, но не могу ничего найти.Любая помощь по этой проблеме будет очень цениться.

Вот мой Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/TR/xmlschema-1/"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

    <display-name>GIT</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/spring/git-spring-config.xml
        </param-value>
    </context-param>    

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <filter>
        <filter-name>WicketFilter</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
          <param-name>applicationFactoryClassName</param-name>
          <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
        </init-param>
      </filter>



    <filter-mapping>
        <filter-name>WicketFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>ERROR</dispatcher>

    </filter-mapping>



    <session-config>
        <!-- timeout in minutes -->
        <session-timeout>30</session-timeout>
    </session-config>

    <!-- When app loads Tomcat will create a Listener object of this type,
        the Listener will initialize the Spring framework. -->
    <listener>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
      </listener>
    </listener>
    <error-page>
        <error-code>404</error-code>
        <location>/404</location>
    </error-page>
</web-app>

У меня также есть addComponentInstantiationListener (new SpringComponentInjector (this));в моем WebApp.class

1 Ответ

3 голосов
/ 22 декабря 2011

Похоже, вы забыли настроить Spring ContextLoaderListener. Убедитесь, что он настроен в вашем web.xml.

...