2013-10-29 46 views

回答

7

我用下面的方法在Glassfish 4中配置Swagger而没有资源XML。

  1. 包括由gradle这个build文件以下依赖(这方法也适用于Maven的):

    编译( 'com.wordnik:招摇-jaxrs_2.9.1:1.3.0'){ 排除组:'org.scala-lang',模块:'scala-compiler' }

  2. 创建一个扩展javax.ws.rs.core.Application并配置ApplicationPath的类

    @ApplicationPath( “资源”) 公共类RESTConfig延伸申请{}

2a上。创建扩展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在注释中是固定的。为了解决这个问题,我使用了以下方法而不是上面的方法

2b。创建一个扩展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); 
    } 
    } 
} 
相关问题