Ich habe versucht, Swagger zu verwenden, um meinen JAX-RS-Resteasy-Service zu dokumentieren. Ich möchte dies programmgesteuert in einer eingebetteten Jetty-Serverumgebung konfigurieren. Hier sind meine Resource-, Server- und Application-Klassen. Ich kann auf http://127.0.0.1:9091/rest/hello
zugreifen und überprüfen, dass mein Rest-Dienst funktioniert.. aber wenn ich auf http://127.0.0.1:9091/rest/api-docs
zugreifen möchte, funktioniert es nicht, sondern zeigt stattdessen eine 404-Seite nicht gefunden an. Kann mir jemand sagen, was ich falsch machen könnte, während ich Swagger konfiguriere.
Resource-Datei
@Api(value = "/", description = "Index")
@Path("/")
public class Index {
@GET
@ApiOperation(
value = "Index aufrufen",
response = Response.class,
responseContainer = "Object"
)
@Produces("text/html")
public Response index() throws URISyntaxException {
File f = new File(System.getProperty("user.dir")+"/index.html");
String mt = new MimetypesFileTypeMap().getContentType(f);
return Response.ok(f, mt).build();
}
@GET
@Path("/hello")
@ApiOperation(
value = "Hallo Get",
response = Response.class,
responseContainer = "Object"
)
public Response helloGet() {
return Response.status(200).entity("HTTP GET-Methode aufgerufen").build();
}
}
Server
public class JettyServer {
public static void main(String[] args) throws IOException {
Server server = new Server(9091);
final HandlerList handlers = new HandlerList();
ServletHolder h = new ServletHolder(new HttpServletDispatcher());
h.setInitParameter("javax.ws.rs.Application", "com.all.MyServices");
// h.setInitOrder(1);
ServletContextHandler restContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
restContextHandler.setContextPath("/rest");
restContextHandler.addServlet(h, "/*");
handlers.addHandler(restContextHandler);
server.setHandler(handlers);
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Servicedatei
public class MyServices extends Application {
private static Set services = new HashSet<>();
public MyServices() {
System.out.println( "Initialisiere Swagger BeanConfig" );
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0");
beanConfig.setResourcePackage( Index.class.getPackage().getName() );
beanConfig.setBasePath( "http://localhost:9091/api" );
beanConfig.setDescription( "Meine RESTful-Services" );
beanConfig.setTitle( "Meine RESTful API" );
beanConfig.setScan( true );
services.add(new Index());
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public Set getSingletons() {
return services;
}
@SuppressWarnings("rawtypes")
public static Set getServices() {
return services;
}
}