2015-06-17 72 views
1

工作,我有一個嵌入式灰熊服務器上運行的Jersey2應用 - 一個設置相同的這個例子: https://github.com/jersey/jersey/tree/2.18/examples/https-clientserver-grizzly/src/main/java/org/glassfish/jersey/examples/httpsclientservergrizzly四處招搖核1.5與新澤西州和灰熊

我與招搖,jersey2-jaxrs_2它整合.10,它一直工作正常。 現在Swagger-core 1.5出來了,它產生了Swagger 2.0定義,我想升級到那個版本。

已經追蹤了來自該網站揚鞭設置說明: https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5 我發現揚鞭將不再工作,因爲它需要一個ServletContext實例被注入,與@Context註釋 和ServletContext的領域不被注入我的項目(他們顯示爲空)。

所以我實際的問題是:新澤西州容器grizzly2-支持servlet的ServletContext呢? 有沒有什麼辦法可以通過改變我的項目配置來獲取ServletContext? 或者我應該研究如何整合不需要ServletContext的swagger-core 1.5?

回答

0

這是我如何得到它的工作:

這些依賴添加到你的pom.xml:

<dependency> 
     <groupId>io.swagger</groupId> 
     <artifactId>swagger-jersey2-jaxrs</artifactId> 
     <version>1.5.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-grizzly2-servlet</artifactId> 
    </dependency> 

註冊ApiListingResource和SwaggerSerializers:

@ApplicationPath("/") 
public class MyApplication extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> classes = new HashSet<>(); 
     classes.add(io.swagger.jaxrs.listing.ApiListingResource.class); 
     classes.add(io.swagger.jaxrs.listing.SwaggerSerializers.class); 
     return classes; 
    } 
} 

初始化灰熊,新澤西州和揚鞭:

public class Main 
{ 
    private final static Logger logger = LogManager.getLogger(Main.class); 

    public static final String BASE_URI = "http://0.0.0.0:8080"; 

    public static HttpServer startServer() 
    { 
     BeanConfig beanConfig = new BeanConfig(); 
     beanConfig.setVersion("1.0.2"); 
     beanConfig.setBasePath("/"); 
     beanConfig.setResourcePackage("your packages"); 
     beanConfig.setScan(true); 

     HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), new ResourceConfig()); 

     // Initialize and register Jersey Servlet 
     WebappContext context = new WebappContext("WebappContext", ""); 
     ServletRegistration registration = context.addServlet("ServletContainer", ServletContainer.class); 
     registration.setInitParameter("javax.ws.rs.Application", MyApplication.class.getName()); 
     registration.addMapping("/*"); 

     context.deploy(httpServer); 

     return httpServer; 
    } 

    public static void main(String[] args) throws Exception 
    { 
     startServer(); 
    } 
}