2015-06-17 3 views
1

У меня есть приложение Jersey2, который работает на встроенный Grizzly сервера - установка идентичной этого пример: https://github.com/jersey/jersey/tree/2.18/examples/https-clientserver-grizzly/src/main/java/org/glassfish/jersey/examples/httpsclientservergrizzlyПолучение чванства-жильный 1,5 работать с Джерси и Grizzly

Я интегрировал его с чванством-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 для инъекций, и ServletContext поля аннотированного с @Context не впрыскивает в мой проект (они показывают как нули).

Так что мой настоящий вопрос: поддерживает ли jersey-container-grizzly2-servlet ServletContext вообще? Есть ли способ заставить ServletContext вставляться, изменяя конфигурацию моего проекта? Или я должен изучить способы интеграции swagger-core 1.5, которые не требуют ServletContext?

ответ

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; 
    } 
} 

Initialize гризли, Джерси и чванство :

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(); 
    } 
} 
Смежные вопросы