在 Apache CXF 中内置 HTTP 服务器

Posted

技术标签:

【中文标题】在 Apache CXF 中内置 HTTP 服务器【英文标题】:Built in HTTP Server in Apache CXF 【发布时间】:2014-01-21 20:19:55 【问题描述】:

Apache CXF 中是否有内置的 HTTP 服务器,例如 Jersey 的“HttpServerFactory”? 我尝试通读 CXF 文档,但找不到类似的东西。

【问题讨论】:

因为这会复制你可以使用 Jetty 的东西......? 【参考方案1】:

是的,有。

如果您想在内置服务器上部署 JAX-RS 服务,请使用 org.apache.cxf.jaxrs.JAXRSServerFactoryBean。用法示例(取自CXF samples):

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(CustomerService.class);
sf.setResourceProvider(CustomerService.class, 
    new SingletonResourceProvider(new CustomerService()));
sf.setAddress("http://localhost:9000/");

sf.create();

如果您想在内置服务器上部署 JAX-WS 服务,您可以使用 javax.xml.ws.Endpoint.publish(..)。示例代码(再次从CXF Sample复制):

    HelloWorldImpl implementor = new HelloWorldImpl();
    String address = "http://localhost:9000/helloWorld";
    Endpoint.publish(address, implementor);

JAX-WS 和 JAX-RS 都需要将 org.apache.cxf:cxf-rt-transports-http-jetty 添加到类路径。

我真的建议看看CXF samples。有时它们是不可或缺的。

【讨论】:

以上是关于在 Apache CXF 中内置 HTTP 服务器的主要内容,如果未能解决你的问题,请参考以下文章

用于 RESTful Web 服务的 Spring Boot 与 Apache CXF?

cxf http 代码自动生成

Apache CXF - 处理操作中缺少的路径参数

cxf拦截器

Apache CXF 入门详解

有没有办法让 org.apache.cxf.transport.servlet.CXFServlet 与 Jetty 11 一起使用