【问题标题】:How to expose a cxf restful web service in java?java - 如何在java中公开一个cxf restful web服务?
【发布时间】:2016-04-14 05:14:29
【问题描述】:

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

【问题讨论】:

    标签: java jax-rs cxf


    【解决方案1】:

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

    <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 中提到的 &lt;context-param&gt;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 有什么意义。

    【讨论】:

    • 感谢@Sampada 的回复。是的,使用 jaxrs + spring 我成功地公开了休息服务。我们可以通过注解来代替 jaxrs xml 配置吗?
    • 没有。需要通过 java 中的工厂 bean 或 xml 配置来创建服务器。
    • 我确实想使用 spring,但我不想通过 xml 来实现,但坚持使用 java 并使用 JAXRSServerFactoryBean 我得到 There is a endpoint already running on / 一直以来,您能否扩展您的答案,以便完全不用 xml 来完成?
    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多