获取 JETTY 服务托管的所有 URL

Get all URLs hosted by a JETTY Service

我在远程机器上托管了一个 JETTY 服务。我没有war的源代码。 但是,war 没有招摇。我的问题是,如何获取我的服务托管的所有 URL(路径)。

war 确实包含 java 旋律。这样我就可以监控服务了。通过 java melody,我可以看到与 HTTP 相关的统计信息。特别是,我还能够查看所有最近的 HTTP 命中和路径。但是,我想要那里的所有路径,就像招摇一样。

确实没有实用的方法来获取这些信息。

这是因为从 Servlet 到使用 Servlet 的所有技术都使用映射,很少使用硬编码路径。

例如:

/people/*
/chat/{org}/{room}
*.jsp
*.do
/product/([0-9a-f]*)/([a-z]*)

你能得到什么...

  • war 的上下文路径。例如:war 被称为 myapp.war,上下文路径(假设您没有自定义它)将是 /myapp/.
  • 公开的 servlet 映射。
    • 在war的内容中静态定义,参见WEB-INF/web.xml
    • 在 war 的注释中动态定义。
    • 打开server dump(注意:这不是堆转储或线程转储)以在控制台上显示已注册映射的列表。

如果 webapp / war 使用比标准 servlet 更复杂的任何东西,那么您将受制于这些库为 table 带来的任何配置。

一些常见的例子(不是一个完整的列表):

  • JSP:这些将是单独的 JSP 文件,每个文件都有自己注册的映射
  • SpringMVC:这些都将通过一个控制器 servlet,这些的映射在 spring 配置/注释中
  • REST:这些也将通过单个控制器 servlet,它们的映射在 REST 配置和注释中。

您将需要进行大量挖掘工作,并剖析 war 文件以了解正在使用的技术,以及这些技术中的每一种如何注册它们的 URL 映射。