【问题标题】:tomcat filter for all webapps所有 webapps 的 tomcat 过滤器
【发布时间】:2011-12-10 03:33:02
【问题描述】:

问题:我想对所有 webapp 进行过滤。

我创建了一个过滤器来监控对 apache tomcat 服务器的请求。

为了举例,它被称为 MyFilter。我在 netbeans 中创建了它,它创建了 2 个单独的目录:

webpages - contains:
    META-INF
    WEB-INF
    index.jsp (a file which i created for viewing monitored data)

source packages
    my.package/MyFilter

当我从 netbeans 执行它时,它会部署它并将我发送到 http://localhost:8080/MyFilter

每当我查看 /MyFilter/somepath 下的页面时,它都会运行过滤器。

我希望过滤器在所有路径上运行,而不仅仅是 webapp

我需要在哪里找到项目文件?我需要哪些项目文件?我应该编辑 conf/web.xml 并添加过滤器吗?还是我应该只在特定 webapp 的 web.xml 中?

编辑:

我将生成的 .war 文件复制到了 tomcat/webapps

当我启动 tomcat 时,它会创建一个目录 (tomcat/webapps/MyFilter/)

我将过滤器添加到 tomcat/conf/web.xml 中。当我启动它时,它无法加载://localhost:8080/ 但成功加载(和过滤器)://localhost:8080/MyFilter

【问题讨论】:

  • @BalusC,我知道阀门,但可以用过滤器完成吗?
  • 是的。也许您只需要在 Tomcat 的 web.xml 中修复过滤器的 URL 模式?
  • 设置为 /* ,不应该是所有请求吗?
  • 是的。也许您的问题是因为您根本没有在 ROOT 上安装 webapp?过滤器仅在已部署的 Web 应用上运行。您问如何为 all webapps 设置全局过滤器。

标签: java tomcat


【解决方案1】:

过滤器将根据定义只在定义它的 Web 应用程序中运行。

您可以在 Tomcat 的 conf/ 目录中的 web.xml 中定义它,以使其默认包含在部署到该 Tomcat 的所有 Web 应用程序中(请注意,您还需要使过滤器类对所有人可用Web 应用程序,可能是放在 Tomcat 的lib/ 目录中)。

或者,您可以实现Tomcat Valve,它在概念上类似于过滤器,但可以安装在 Tomcat 的引擎、主机或上下文上。

【讨论】:

  • 谢谢,但就我而言,我确实使用过滤器来实现它。我将它添加到 web.xml,它在 apache 启动时加载,但它似乎仍然只为 /MyFilter 路径运行过滤器命令。我在 webapps/ 目录 btw 中找到了 build/web/*。我错过了什么?
  • which web.xml 你添加了吗?您的网络应用程序之一?或者到你的Tomcat安装目录conf/中的那个?
  • 两者。我认为问题是在 conf/web.xml 我需要以某种方式为过滤器类指定不同的路径
  • @Liorsolo:您是否确保过滤器类实际上位于所有应用程序的类路径中?你有没有把它放在一个 JAR 中(以及它的所有依赖项!),然后把它放到 Tomcats lib/ 中?
  • 它生成一个war文件而不是一个jar。 tomcat 的 lib 只包含 jars
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2014-05-13
  • 2010-09-08
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多