Чтобы создать новый экземпляр HttpServer с RESTful услуг, код выглядит следующим образом:Как зарегистрировать JAX-RS в существующем Grizzly HttpServer?
ResourceConfig resourceConfig = new ResourceConfig(
RestPingService.class
);
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(
URI.create("http://example.com:80/rest"),
resourceConfig,
false
);
Однако это requries, что я в силе создания сервера. Мне также может быть предоставлен существующий экземпляр, где другие сервлеты/транспорты/независимо от того, что уже зарегистрировано, и когда я должен добавить мой.
Я искал способ вставить в ResourceConfig позже, но не смог найти его.
В этом вопросе Grizzly Embedded Server + Jersey service + Servlet filter один проходит через сервлет. Это единственный способ? Это медленнее? И как можно настроить транспорт (хост, порт), если он будет отличаться для служб REST?
Для веб-служб SOAP (JAX-WS) код является прямым; для каждого экземпляра службы регистрация идет как этого
HttpHandler jaxwsHandler = new JaxwsHandler(soapWebService);
httpServer.getServerConfiguration().addHttpHandler(jaxwsHandler,
//see https://java.net/projects/grizzly/lists/users/archive/2014-11/message/7 for why this is done.
HttpHandlerRegistration.bulder()
.contextPath(path)
.urlPattern("")
.build());
И если NetworkListener (хост, порт) является новым, то зарегистрировать, что когда-то:
httpServer.addListener(networkListener);
Я надеялся, что синтаксис и логика были бы подобны. Там JaxwsHandler, но нет класса JaxrsHandler. В конце концов, они похожи, обе веб-службы, обслуживаемые через HTTP.
org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer имеет нет публичного конструктора. И 2 конструктора принимают приложение, а не ResourceConfig. Есть ли другой в другой пакет? –
Итак, вопрос: как создать HttpHandler для данного ResourceConfig? –
только что обновил ответ – alexey