2016-11-08 7 views
0

Я разрабатываю REST api и пытаюсь использовать Swagger вместе с Джерси, чтобы сделать это.
Я следую приведенному здесь руководству: - https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
Я использую ResourceConfig вместо класса Application и соответствующим образом изменил шаги в руководстве. Я развертываю API на гризли.Как использовать swagger с ResourceConfig в майке?

Здесь главный файл: -

package com.example; 

import org.glassfish.grizzly.http.server.HttpServer; 
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; 
import org.glassfish.jersey.server.ResourceConfig; 

import java.io.IOException; 
import java.net.URI; 

import io.swagger.jaxrs.config.*; 

/** 
* Main class. 
* 
*/ 
public class Main { 
    // Base URI the Grizzly HTTP server will listen on 
    public static final String BASE_URI = "http://localhost:8080/"; 

    /** 
    * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application. 
    * @return Grizzly HTTP server. 
    */ 
    public static HttpServer startServer() { 
     // create a resource config that scans for JAX-RS resources and providers 
     // in com.example package 
     final ResourceConfig rc = new ResourceConfig().packages("com.example"); 
     rc.register(io.swagger.jaxrs.listing.ApiListingResource.class); 
     rc.register(io.swagger.jaxrs.listing.SwaggerSerializers.class); 
     BeanConfig beanConfig = new BeanConfig(); 
     beanConfig.setVersion("1.0.2"); 
     beanConfig.setSchemes(new String[]{"http"}); 
     beanConfig.setHost("localhost:8080"); 
     beanConfig.setBasePath("resources/api"); 
     beanConfig.setResourcePackage("io.swagger.resources"); 
     beanConfig.setScan(true); 

     // create and start a new instance of grizzly http server 
     // exposing the Jersey application at BASE_URI 
     return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc); 
    } 

    /** 
    * Main method. 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     final HttpServer server = startServer(); 
     System.out.println(String.format("Jersey app started with WADL available at " 
       + "%sapplication.wadl\nHit enter to stop it...", BASE_URI)); 
     System.in.read(); 
     server.stop(); 
    } 
} 

Теперь, когда я пытаюсь получить доступ к swagger.json в URL http://localhost:8080/swagger.json, я получаю 500, Сбой запроса ошибки.
Почему это и как его отладить?

+1

Отъезд [это сообщение] (http://stackoverflow.com/q/33681371/2587435). Вероятно, связанный –

+0

@peeskillet Спасибо! Это была та же проблема. –

ответ

2

Взгляните на этот проект:

https://github.com/sofien-hamdi/rest-mongo

Я настроил его с помощью BeanConfig.

package com.kt.examples.rs.configuration; 

import org.glassfish.jersey.server.ResourceConfig; 
import org.glassfish.jersey.server.wadl.internal.WadlResource; 
import org.springframework.context.annotation.Configuration; 

import com.kt.examples.rs.controller.UserController; 

import io.swagger.jaxrs.config.BeanConfig; 
import io.swagger.jaxrs.listing.ApiListingResource; 
import io.swagger.jaxrs.listing.SwaggerSerializers; 

@Configuration 
public class JerseyConfig extends ResourceConfig { 

    public JerseyConfig() { 
    this.registerEndpoints(); 
    this.configureSwagger(); 
    } 

    private void registerEndpoints() { 
    this.register(UserController.class); 
    this.register(WadlResource.class); 
    // http://localhost:9090/v1/application.wadl 
    } 

    private void configureSwagger() { 
    this.register(ApiListingResource.class); 
    this.register(SwaggerSerializers.class); 
    BeanConfig config = new BeanConfig(); 
    config.setConfigId("spring-boot-jaxrs-swagger"); 
    config.setTitle("Spring boot jaxrs swagger integration"); 
    config.setVersion("v1"); 
    config.setBasePath("/"); 
    config.setResourcePackage("com.kt.examples.rs"); 
    config.setPrettyPrint(true); 
    config.setScan(true); 
    // http://localhost:9090/v1/swagger.json 
    } 
} 
+1

Пожалуйста, также укажите основную часть ответа здесь. SO используется для долгосрочного использования, и ссылки могут измениться. – Gary99

+0

я добавил необходимый код. –

+0

Это не работает для меня –

Смежные вопросы