Skip to content

Instantly share code, notes, and snippets.

@simon04
Created June 17, 2020 10:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simon04/1524aed94900c04302cc575562e67e14 to your computer and use it in GitHub Desktop.
Save simon04/1524aed94900c04302cc575562e67e14 to your computer and use it in GitHub Desktop.
Serve swagger-ui using Jetty's DefaultServlet

The goal is to server Swagger UI via http://localhost:8080/swagger-ui/

  1. Add Maven/Gradle dependency org.webjars:swagger-uihttps://search.maven.org/artifact/org.webjars/swagger-ui/3.26.1/jar

  2. Configure the Jetty DefaultServlet:

package at.tbbm.manual_input;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class Foo {
    public static void main(String[] args) throws Exception {
        ServletContextHandler handler = new ServletContextHandler();

        // add other servlets

        ServletHolder swagger = new ServletHolder("swagger-ui", DefaultServlet.class);
        swagger.setInitParameter("resourceBase", Foo.class.getClassLoader().getResource("META-INF/resources/webjars/swagger-ui/3.26.1/").toString());
        swagger.setInitParameter("pathInfoOnly", Boolean.TRUE.toString());
        handler.addServlet(swagger, "/swagger-ui/*");

        Server server = new Server(8080);
        server.setHandler(handler);
        server.start();
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment