如何将JAX-RS注册到现有的Grizzly HttpServer



使用RESTful服务创建一个新的 HttpServer实例,代码如下:

ResourceConfig resourceConfig = new ResourceConfig(
    RestPingService.class
);
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(
    URI.create("http://example.com:80/rest"), 
    resourceConfig, 
    false
);

但是,这要求我拥有创建服务器的权力。我也可以给一个现有的实例,其中其他servlet/传输/任何已经注册,当我必须添加我的

我一直在寻找一种方法来坚持一个资源配置以后,但无法找到一个。

在这个问题中,Grizzly嵌入式服务器+ Jersey服务+ Servlet过滤器通过Servlet。这是唯一的办法吗?那样会更慢吗?如果REST服务的传输(主机、端口)是不同的,那么如何配置它呢?

对于SOAP web服务(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 (host, port)是新的,那么注册一次:

httpServer.addListener(networkListener);

我希望语法和逻辑是相似的。有JaxwsHandler,但没有JaxrsHandler类。毕竟它们是相似的,都是通过HTTP提供的web服务。

如果你有一个resourcecconfig -你可以创建一个Grizzly HttpHandler:

HttpHandler httpHandler = new GrizzlyHttpContainerProvider()
                                 .createContainer(HttpHandler.class, resourceConfig);

并在HttpServer上注册为正常的Grizzly HttpHandler

最新更新