如何让servlet过滤器停止在Tomcat中的应用程序启动时加载?

1 java tomcat servlets servlet-filters

下面是我的部署描述符.我正在使用Spring MVC,但是我有一个url重写过滤器应该运行,然后转发到相应的控制器.出于某种原因,此过滤器在启动时加载,尝试获取转换的路径,并抛出nullpointerexception,因为没有路径.我从来不知道在启动时加载了过滤器,但这看起来就像正在发生的事情.

<!-- SERVLETS -->

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/index.html</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!-- FILTERS -->

<filter>
    <filter-name>URLRewriteFilter</filter-name>
    <filter-class>com.ecomm.filters.URLRewriteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>URLRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

编辑:

Aug 17, 2010 11:28:12 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
    at com.ecomm.helpers.TranslateURLHelper.executeController(TranslateURLHelper.java:47)
    at com.ecomm.filters.URLRewriteFilter.doFilter(URLRewriteFilter.java:41)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 5

看起来您正在使用Eclipse在ROOT上下文中部署webapp.Eclipse的Tomcat插件确实在启动时通过在ROOT上发出GET请求进行自检.

只是忽略它或修复代码,以便它不会抛出NPE.这是IMO绝对是一个错误com.ecomm.filters.URLRewriteFilter.不应将空路径视为例外情况.最终用户可以将它们解雇.