全局Java Servlet Filter,可能吗?

发布于 2024-12-07 17:05:14 字数 246 浏览 0 评论 0原文

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

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

有可能吗?

笔记: 值得一提的是,我使用 Apache Tomcat 7 作为选择的服务器。

谢谢!

米奇

I'm writing a project for academic purposes which among other irrelevant stuff, includes writing a filter which monitors servlet/jsp response times.

The thing is that the filter should work on every deployed web application in the server and not only over a specific one, I just couldn't find any information regarding applying "global" filters.

Is it even possible?

NOTE:
It's important to mention that i'm using Apache Tomcat 7 as the server of choice.

Thanks!

Mikey

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

魂牵梦绕锁你心扉 2024-12-14 17:05:14

您可以在 Tomcat 的公共类路径中提供过滤器并编辑 Tomcat 自己的 /conf/web.xml 来添加过滤器,但这不会在不存在的 web 应用程序上下文上运行(即它不覆盖 所有可能的请求)并且它在所有部署的网络应用程序中都是可覆盖的。更稳健的解决方案取决于所使用的 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 中按如下方式注册:

<Valve className="com.example.MyValve" />

You could provide the filter in Tomcat's common classpath and edit Tomcat's own /conf/web.xml to add the filter, but this does not run on non-existing webapp contexts (i.e. it does not cover all possible requests) and it is overrideable in all deployed webapps. The more robust solution depends on the servlet container used. In case of Tomcat, you need the Valve component.

Kickoff example:

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);
    }

}

register it as follows in server.xml:

<Valve className="com.example.MyValve" />
你的他你的她 2024-12-14 17:05:14

过滤器是针对每个 Web 应用程序进行配置的,但 Tomcat 本身可能具有用于计时请求/响应处理时间的机制。

Filters are configured per-web app, but Tomcat itself may have a mechanism for timing request/response processing times.

我不在是我 2024-12-14 17:05:14

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

You can config the url-pattern of your filter to process any request/response that you want. Please check http://www.caucho.com/resin-3.0/config/webapp.xtp#filter-mapping

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文