WildFly 管理 - list/detect REST 端点部署在 WildFly 中

WildFly management - list/detect REST endpoints deployed in WildFly

有没有办法(例如从 WildFly 管理控制台)列出部署在 WildFly 中的所有 REST 端点?或者在服务器启动时将它们列在日志中?

使用 RegistryStatsResource

使用 RESTEasy(随 WildFly 一起提供),您可以将以下内容添加到您的 web.xml

<context-param>
    <param-name>resteasy.resources</param-name>
    <param-value>org.jboss.resteasy.plugins.stats.RegistryStatsResource</param-value>
</context-param>

然后请求以下URL:

http://[hostname]:[port]/[context]/[api-path]/resteasy/registry

此类端点可以生成 XML 和 JSON 内容。只需将 Accept header 添加到具有所需媒体类型的请求中:

  • application/xml
  • application/json

检查源代码

如果您对创建自己的实现的源代码感兴趣,请查看 RegistryStatsResource class on GitHub

源代码中最相关的部分如下所示(特定于 RESTEasy):

ResourceMethodRegistry registry = (ResourceMethodRegistry) 
    ResteasyProviderFactory.getContextData(Registry.class);

for (String key : registry.getBounded().keySet()){
List<ResourceInvoker> invokers = registry.getBounded().get(key);

for (ResourceInvoker invoker : invokers) {

    if (invoker instanceof ResourceMethodInvoker) {

        ResourceMethodInvoker rm = (ResourceMethodInvoker) invoker;

        // Extract metadata from the ResourceMethodInvoker
    }
}

Swagger 可能是另一种选择

根据您的要求,您可以使用 Swagger to document your API. It comes with a set of annotations 来描述您的 REST 端点。

然后使用 Swagger UI 为您的 API 提供实时文档。


注意: 截至 2017 年 2 月,看起来像 RegistryStatsResource class is completely undocumented. I occasionally discovered it when digging into the RESTEasy source code for debugging purposes. Also, I found this JBoss EAP issue 跟踪缺少 class 的文档。

从管理控制台,您可以查看已发布的端点。

当您以管理员身份登录后,点击顶部导航栏中的运行时选项,如下所示。

单击 JAX-RS 选项,然后单击 REST 资源选项。这将在最右侧显示端点。