【问题标题】:How do you set the specific url path you want to work with in cxf?如何在 cxf 中设置要使用的特定 url 路径?
【发布时间】:2013-08-29 11:28:22
【问题描述】:

我正在使用 CXF 中的注释方法通过 Web 服务调用创建不同的功能。出于某种原因,我所有的 URL 路径都来自{hostname}/services/status/{my_path}。我正在使用这样的注释方法:

    @Path("/{type:(?i)index}")
    public IndexServiceResource getIndexServiceResource() {
        return new IndexServiceResource(this.handlers);
    }

我希望@Path 直接来自{hostname} 而不是{hostname}/services/status。这将设置在哪里?

【问题讨论】:

    标签: java web-services jax-ws cxf jax-rs


    【解决方案1】:

    您可以将处理 cxf web 服务的 CXFServlet "/services" 绑定到 web.xml 中的主上下文 "/"。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
       <display-name>cxf</display-name>
       <description>cxf</description>
       <servlet>
            <servlet-name>cxf</servlet-name>
            <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>cxf</servlet-name>
            <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
    </web-app>
    

    尝试将 url-pattern 从“/services/*”更改为“/*”。

    但是我不确定是否有任何方法可以将“/status”更改为也绑定到主上下文“/*”。

    当然,如果您的请求通过 Apache 代理传递,则可以设置映射,例如“http://my.domain”->“http://internal.server/services/status”。但这是在您的代码之外完成的。

    【讨论】:

      【解决方案2】:

      我认为由于您的 Jaxrs 服务器配置需要“状态”(虽然我不确定)。请检查您的上下文文件中的 jaxrs 服务器配置。

      <jaxrs:server id="restContainer" address="/">
          <jaxrs:serviceBeans>
      

      地址属性是否包含状态?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-07
        • 2021-07-17
        • 2017-01-24
        • 2023-01-04
        • 1970-01-01
        相关资源
        最近更新 更多