【发布时间】:2015-01-18 14:19:08
【问题描述】:
我有一些带有 Jersey (2.7) 和 Jetty (9.2.5.v2014112) 的测试代码,我正在尝试移植到 CXF (3.0.x) 和 Jetty(相同版本)。有一部分我想不通,相当于下面的rc.register(resource) 行:
ServletContextHandler sch = new ServletContextHandler();
sch.setContextPath("/xxx");
resource = new TheResource();
ResourceConfig rc = new ResourceConfig();
rc.register(resource);
ServletContainer sc = new ServletContainer(rc);
ServletHolder holder = new ServletHolder(sc);
sch.addServlet(holder, "/*");
Server server = new Server(port);
server.setHandler(sch);
server.start();
server.join();
对于 CXF/Jetty 案例,我知道我需要执行以下操作:
CXFNonSpringJaxrsServlet context = new CXFNonSpringJaxrsServlet();
// EQUIVALENT OF:
// ResourceConfig rc = new ResourceConfig();
// rc.register(myresource)
// SOMETHING.setResourceConfig(rc)
ServletHolder holder = new ServletHolder(context);
ServletContextHandler handler = new ServletContextHandler("/restroot");
handler.addServlet(holder, "/*");
// Using ContextHandlerCollection cos my jetty needs to serve more
// than just this REST service
ContextHandlerCollection collection = new ContextHandlerCollection();
collection.addHandler(handler);
Server server = new Server(8080);
server.setHandler(collection);
server.start();
server.join();
有人知道如何/如果这可能吗?
只是为了澄清我在这里尝试做的事情:我正在尝试在嵌入式 Jetty 实例上发布 JAX-RS 服务,并且我需要 完全控制 JAX 的生命周期-RS 豆。
马丁
【问题讨论】:
标签: java jersey jetty cxf jax-rs