Spring + Wicket + Tomcat:由于IllegalArgumentException,程序无法启动

时间:2011-12-22 12:30:58

标签: spring tomcat wicket

我在tomcat中尝试部署WAR时遇到了问题。该程序是一个Wicket + Spring应用程序,它使用基于注释的方法https://cwiki.apache.org/WICKET/spring.html#Spring-AnnotationbasedApproach来加载/创建spring bean。由于此错误,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 个答案:

答案 0 :(得分:3)

您似乎忘了配置Spring ContextLoaderListener。确保在web.xml

中配置了它