【发布时间】:2016-01-11 12:14:59
【问题描述】:
我使用 grizzly 创建了两个项目。
一个用于 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 存在。
还有其他方法可以将两者结合起来吗?
【问题讨论】:
-
您似乎掌握了创建 Jersey 应用程序的 HttpServer 的句柄。是什么阻止您将其用于 JAX-WS 配置?您需要使用重载的
createHttpServer方法,该方法接受一个布尔值作为最后一个参数,因为它告诉服务器在它返回时不要启动。 -
+1 用于 peeskillet 建议。您可以使用 Jersey 返回的 HttpServer,但我建议请求 Jersey 创建未启动的 HttpServer(将 false 作为参数之一传递),然后,一旦添加了所有 HttpHandlers - 启动服务器(httpServer.start ())