2016-01-11 4 views
0

Я создал два проекта, используя гризли.Grizzly JAX-WS и JAX-RS

Один для jax-rs и один для jax-ws.

код, чтобы получить JAX-RS работает, выглядит так:

String BASE_URI = "http://localhost:8080/myapp/"; 
    ResourceConfig rc = new ResourceConfig().packages("za.co.quinn.grizzly.rest"); 
    HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc); 

Код, чтобы получить JAX-WS работает выглядит следующим образом:

HttpServer httpServer = new HttpServer(); 
    ServerConfiguration configuration = httpServer.getServerConfiguration(); 
    configuration.addHttpHandler(new JaxwsHandler(new AddService()), "/add"); 
    httpServer.addListener(new NetworkListener("jaxws-listener", "0.0.0.0", 8080)); 
    httpServer.start(); 

Я хочу, чтобы объединить два для получения jax-ws и jax-rs, работающих в одном проекте.

Было бы неплохо иметь JaxrsHandler, который я мог бы просто добавить, как так:

configuration.addHttpHandler(new JaxrsHandler(new AddAnotherService()), "/addAnother"); 

Но нет JaxrsHandler существует.

Есть ли другой способ, я могу объединить два?

+0

Кажется, у вас есть ручка на HttpServer создания приложения Джерси. Что мешает вам использовать это для конфигурации JAX-WS? Вы захотите использовать перегруженный ['createHttpServer'] (https://github.com/jersey/jersey/blob/master/containers/grizzly2-http/src/main/java/org/glassfish/jersey/grizzly2/ httpserver/GrizzlyHttpServerFactory.java # L139), который принимает логическое значение как последний аргумент, так как это означает, что сервер не запускается при его возврате. –

+0

+1 для предложения peeskillet. Вы можете использовать HttpServer, возвращенный Джерсиком, но я бы предложил попросить Джерси создать неиспользуемый HttpServer (передать false как один из параметров), а затем, как только все HttpHandlers будут добавлены, запустите сервер (httpServer.start()) – alexey

ответ

1

Это решило мою проблему:

Injector injector = Guice.createInjector(new JpaPersistModule("myJpaUnit"), 
      new ServletModule() { 
       @Override 
       protected void configureServlets() { 
        bind(new TypeLiteral<ExerciseDao>() { 
        }).to(ExerciseDaoImpl.class); 
       } 
      }); 

    ResourceConfig rc = new PackagesResourceConfig("za.co.quinn.ws"); 
    IoCComponentProviderFactory ioc = new GuiceComponentProviderFactory(rc, injector); 

    PersistInitializer initializer = injector.getInstance(PersistInitializer.class); 
    HttpServer server = GrizzlyServerFactory.createHttpServer(BASE_URI, rc, ioc); 
Смежные вопросы