全局Java Servlet过滤器,有可能吗?

时间:2011-10-03 00:58:32

标签: java java-ee tomcat servlet-filters

我正在编写一个用于学术目的的项目,其中包括其他不相关的内容,包括编写一个监视servlet / jsp响应时间的过滤器。

问题是过滤器应该适用于服务器中的每个已部署的Web应用程序,而不仅仅是特定的应用程序,我无法找到有关应用“全局”过滤器的任何信息。

甚至可能吗?

注意: 值得一提的是,我正在使用 Apache Tomcat 7作为首选服务器。

谢谢!

米奇

3 个答案:

答案 0 :(得分:18)

您可以在Tomcat的公共类路径中提供过滤器并编辑Tomcat自己的/conf/web.xml以添加过滤器,但这不会在不存在的webapp上下文中运行(即它不包括所有可能的请求)并且可以在所有已部署的Web应用程序中覆盖。更强大的解决方案取决于所使用的servlet容器。如果是Tomcat,则需要the Valve component

开球示例:

import org.apache.catalina.valves.ValveBase;

public class MyValve extends ValveBase {

    @Override
    public void invoke(Request request, Response response) throws IOException, ServletException {
        // ...

        getNext().invoke(request, response);
    }

}

server.xml

中按如下方式注册
<Valve className="com.example.MyValve" />

答案 1 :(得分:0)

过滤器是按网络应用程序配置的,但Tomcat本身可能有一种机制来定时请求/响应处理时间。

答案 2 :(得分:-2)

您可以配置过滤器的url-pattern来处理您想要的任何请求/响应。请检查http://www.caucho.com/resin-3.0/config/webapp.xtp#filter-mapping