【问题标题】:Add multiple endpoint / service classes using apache cxf使用 apache cxf 添加多个端点/服务类
【发布时间】:2023-04-02 23:50:01
【问题描述】:

我正在尝试使用 apache cxf(非弹簧)实现 rest webservice。我已经配置了我的 web.xml 并添加了一个端点地址,它工作正常,但现在我想再添加一个端点地址或一个服务类,但我无法做到,因为第二个覆盖了第一个. 我的 web.xml 是这样的

<servlet>
        <display-name>CXFNonSpringJaxrsServlet</display-name>
        <servlet-name>CXFNonSpringJaxrsServlet</servlet-name>
        <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
        <init-param>
            <param-name>jaxrs.serviceClasses</param-name>
            <param-value>abc</param-value>
        </init-param>
            <init-param>
                <param-name>jaxrs.address</param-name>
                <param-value>/abc</param-value>
            </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>



        <servlet>
        <display-name>CXFNonSpringJaxrsServlet</display-name>
        <servlet-name>CXFNonSpringJaxrsServlet</servlet-name>
        <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
        <init-param>
            <param-name>jaxrs.serviceClasses</param-name>
            <param-value>xyz</param-value>
        </init-param>
        <init-param>
            <param-name>jaxrs.address</param-name>
            <param-value>/xyz</param-value>
        </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>

【问题讨论】:

    标签: java rest cxf wadl


    【解决方案1】:

    你可以这样做有多个端点:

    web.xml

    <servlet>
    <servlet-name>s1</servlet-name>
    
    <servlet-class>
        org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet
    </servlet-class>
    <init-param>
    <param-name>jaxrs.serviceClasses</param-name>
    <!-- Multiple resource classes separated with space -->
    <param-value>
    com.gsdev.Resource1 com.gsdev.Resource2
    com.ttdev.bs.BookSelectionsResource
    </param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>s1</servlet-name>
    <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    

    资源类如下:

    @Path("endpoint1/")
    public class Resource1
    
    @Path("endpoint2/")
    public class Resource2
    

    现在你有不同的端点

    http://host:port/webapp/services/endpoint1/
    http://host:port/webapp/services/endpoint2/
    

    【讨论】:

    • 谢谢 效果很好,我使用的是 apache 文档,但它是错误的!没有提到空格分隔的参数。这是: org.apache.cxf.systest.jaxrs.BookStore1, org.apache.cxf.systest.jaxrs.BookStore2
    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    相关资源
    最近更新 更多