全局 Java Servlet Filter,可能吗?
2022-09-04 20:28:12
我正在为学术目的编写一个项目,其中包括编写一个监视servlet / jsp响应时间的过滤器。
问题是,过滤器应该在服务器中每个部署的Web应用程序上工作,而不仅仅是在特定的应用程序上,我只是找不到有关应用“全局”过滤器的任何信息。
这有可能吗?
注意:重要的是要提到我正在使用Apache Tomcat 7作为首选服务器。
谢谢!
麦克
我正在为学术目的编写一个项目,其中包括编写一个监视servlet / jsp响应时间的过滤器。
问题是,过滤器应该在服务器中每个部署的Web应用程序上工作,而不仅仅是在特定的应用程序上,我只是找不到有关应用“全局”过滤器的任何信息。
这有可能吗?
注意:重要的是要提到我正在使用Apache Tomcat 7作为首选服务器。
谢谢!
麦克
您可以在 Tomcat 的通用类路径中提供筛选器,并编辑 Tomcat 自己的筛选器以添加筛选器,但这不会在不存在的 webapp 上下文中运行(即,它不涵盖所有可能的请求),并且可以在所有已部署的 web 应用程序中重写。更强大的解决方案取决于所使用的 servlet 容器。在Tomcat的情况下,您需要Valve组件。/conf/web.xml
开球示例:
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" />
过滤器是按Web应用程序配置的,但Tomcat本身可能具有定时请求/响应处理时间的机制。