我正在写一个用于学术目的的项目,除其他无关紧要的内容外,还包括编写一个监视servlet / jsp响应时间的过滤器。
事实是,过滤器应该可以在服务器中部署的每个Web应用程序上运行,而不仅可以在特定的Web应用程序上运行,我只是找不到有关应用“全局”过滤器的任何信息。
可能吗?
注意:
重要的是要提到我正在使用 Apache Tomcat 7作为首选服务器。
谢谢!
米奇
最佳答案
您可以在Tomcat的公共类路径中提供过滤器,并编辑Tomcat自己的/conf/web.xml
以添加过滤器,但这不能在不存在的webapp上下文中运行(即,它不覆盖所有可能的请求),并且在所有已部署的webapp中都可以覆盖。更可靠的解决方案取决于所使用的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" />