全局Java Servletfilter,有可能吗?

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

问题是filter应该在服务器中的每个已部署的Web应用程序上工作,而不仅仅是在特定的应用程序上,我找不到有关应用“全局”filter的任何信息。

它甚至可能吗?

注意:重要的是要提到我使用Apache Tomcat 7作为首选服务器。

谢谢!

米奇

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

开球示例:

 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按如下方式注册:

  

filter是按Web应用程序配置的,但Tomcat本身可能具有定时请求/响应处理时间的机制。

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