如何在 java 中公开 cxf restful 网络服务?

How to expose a cxf restful web service in java?

有没有像Endpoint.publish(address, implementor)这样的class公开服务?我正在尝试在 Tomcat 上部署我的应用程序。 CXF 或 JAX-RS 中是否有任何 class 来公开 REST Web 服务?

您需要在 serviceBean 中使用基于 javax.ws.rs 的注释来注释您的 API,这些注释表示 HTTP 方法,例如 GETPUTPOSTDELETE等等。这会将您的 API 暴露给您需要在 CXF 配置中创建的 JAX-RS 服务器 XML。像这样 -

<jaxrs:server id="base" address="/">
    <jaxrs:providers>
        <ref bean="provider1" />
        <ref bean="provider2" />            
    </jaxrs:providers>
    <jaxrs:serviceBeans>
        <ref bean="serviceBean" />
    </jaxrs:serviceBeans>
</jaxrs:server>

此配置文件与 web.xml

中提到的 <context-param>contextConfigLocation 相同

如果您不使用 Spring,可以使用以下代码以编程方式创建 JAX-RS 服务器:

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(abc.class);

List providers = new ArrayList();
sf.setProviders(providers);
sf.setAddress(ENDPOINT_ADDRESS);

server = sf.create(); 

但我不明白在没有 Spring 的情况下使用 CXF 的意义。