WildFly management - list/detect REST endpoints de

2020-06-16 01:09发布

问题:

Is there a way (e.g. from a WildFly management console) to list all REST endpoints deployed in WildFly? Or to list them in a log while a server is starting?

回答1:

Using the RegistryStatsResource

With RESTEasy (that is shipped with WildFly), you could add the following to your web.xml:

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

And then request the following URL:

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

Such endpoint can produce XML and JSON content. Just add the Accept header to the request with the desired media type:

  • application/xml
  • application/json

Checking the source code

If you are interested in the source code to create your own implementation, have a look at the RegistryStatsResource class on GitHub.

The most relevant part of the source code is shown below (it's RESTEasy specific):

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 may be an alternative

Depending on your requirements, you can use Swagger to document your API. It comes with a set of annotations to describe your REST endpoints.

Then use Swagger UI to provide a live documentation for your API.


Note: As of February 2017, looks like the 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 that tracks the lack of documentation for that class.



回答2:

From the Management Console, you can view the published endpoints.

When you login as an administrator, Click the Runtime option on the top navigation bar as shown below.

Click the JAX-RS option, then click the REST Resources option. This will display the endpoints to the far right.