[Tapestry5] Tapestry集成spring启动tomcat6.0错误

hefuren 2009-08-10
启动tomcat错误:
2009-8-10 0:07:14 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter TapestrySpring
java.lang.NullPointerException
at org.apache.tapestry5.internal.TapestryAppInitializer.addSyntheticSymbolSourceModule(TapestryAppInitializer.java:133)
at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:112)
at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:74)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-8-10 0:07:14 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2009-8-10 0:07:14 org.apache.catalina.core.StandardContext start
严重: Context [/Colleges] startup failed due to previous errors

我的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/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        classpath:com/colleges/spring/applicationContext.xml,
        classpath:com/colleges/spring/*-context.xml
        </param-value>
    </context-param>  
  
    <filter>
        <filter-name>cacheFilter</filter-name>
        <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
    </filter>
  
    <filter>
        <filter-name>TapestrySpring</filter-name>       
        <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>TapestrySpring</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
   
     <!--
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
    
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
    -->
  
    <servlet>
        <description>Direct Web Remoter Servlet</description>
        <display-name>DWR Servlet</display-name>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>20</load-on-startup>
    </servlet> 
   
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    <mime-mapping>
        <extension>css</extension>
        <mime-type>text/css</mime-type>
    </mime-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
    </welcome-file-list>
    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>
</web-app>


hefuren 2009-08-10
如果web.xml文件中去掉:
<filter>
        <filter-name>TapestrySpring</filter-name>       
        <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>TapestrySpring</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

这段代码后,就能启动了。

为什么呢 ?困惑了好几天了。
fantify 2009-08-11
如果你改用<filter-class>org.apache.tapestry5.TapestryFilter</filter-class>是什么结果呢?
hefuren 2009-08-11
谢谢,你的热心,问题解决了。

我需要在web.xml文件前面加上:

<context-param>
    <param-name>tapestry.app-package</param-name>
    <param-value>com.colleges.tapestry</param-value>
</context-param>

这个就可以了。

但是是否使用了tapestry的过滤器,我还在后续的开发中,才能验证。
Global site tag (gtag.js) - Google Analytics