Я использовал следующий подход для настройки Swagger в Glassfish 4 без XML-ресурса.
Включает следующую зависимость в файле сборки gradle (этот подход также применим к Maven):
компиляция ('com.wordnik: swagger-jaxrs_2.9.1: 1.3.0') { группа исключения: 'org.scala-lang', модуль: 'scala-compiler'}
Создайте класс, который расширяет javax.ws.rs.core.Application, и настройте ApplicationPath, например.
@ApplicationPath ("ресурсы") открытый класс RESTConfig расширяет приложение {}
2а. Создайте класс, расширяющий com.wordnik.swagger.jaxrs.config.DefaultJaxrsConfig, и аннотируйте его следующим образом:
@WebServlet(name = "SwaagerJaxrsConfig" initParams = {@WebInitParam(name="api.version", value="0.1.0"), @WebInitParam(name="swagger.api.basepath", value="http://localhost:8080/resources"})}, loadOnStartup = 2)
public class SwaagerJaxrsConfig extends DefaultJaxrsConfig{}
Недостатком этого подхода является то, что версия API и базовый URL-адрес вашего приложения жестко закодированы в аннотации. Чтобы обойти это, я использовал следующий подход вместо описанного выше.
2б. Создайте класс, который расширяет HttpServlet и выполняет загрузку, выполняемую DefaultJaxrsConfig, например.
@WebServlet(name = "SwaggerJaxrsConfig", loadOnStartup = 2)
public class SwaggerJaxrsConfig extends HttpServlet {
private Logger log = Logger.getLogger(SwaggerJaxrsConfig.class);
@Inject Version version;
@Override public void init(ServletConfig servletConfig) {
try {
super.init(servletConfig);
SwaggerConfig swaggerConfig = new SwaggerConfig();
ConfigFactory.setConfig(swaggerConfig);
swaggerConfig.setBasePath("http://localhost:8080/resources"); //TODO look up app path
swaggerConfig.setApiVersion(version.getVersion());
ScannerFactory.setScanner(new DefaultJaxrsScanner());
ClassReaders.setReader(new DefaultJaxrsApiReader());
} catch (Exception e) {
log.error("Failed to configure swagger", e);
}
}
}
person
lucasweb
schedule
29.10.2013