【问题标题】:Relative Path for WSDL in CXF Webservice ClientCXF Webservice 客户端中 WSDL 的相对路径
【发布时间】:2010-12-02 11:53:20
【问题描述】:

在我的应用程序中,我使用了许多 Web 服务。由于 WSDL 没有更改,我已将 WSDL 文件集成到我的项目中。如果我使用 CXF 中的 WSDL2Java 工具,则 WSDL 位置的绝对路径是硬编码的。

现在我的问题是,如何将@WebserviceClient 注解中的“wsdlocation”参数更改为相对路径?

这是一个例子:

@WebServiceClient(name = "Time", 
                  wsdlLocation = "file:/C:/Users/dominik/Documents/NetBeansProjects/Webservices/src/wsdl/Time.wsdl" ) /*I want this path to be relative */
public class Time extends Service {

【问题讨论】:

    标签: wsdl cxf relative-path


    【解决方案1】:

    我今天终于弄清楚了如何正确地做到这一点。只需将文件放在您的资源文件夹中,然后您可以使用 wsdlLocation 来相对引用它们,如下所示:

    <wsdlLocation>classpath:wsdl/myservice.wsdl</wsdlLocation>
    

    在此处查看我对类似问题的回答:https://stackoverflow.com/a/9875701/1190144

    【讨论】:

    • 结合起来,因为如果你使用它,只有 不起作用!
    • 遗憾的是,由于“无效的 WSDL URL:类路径”,这在插件的 3.4.4 版本上失败了。如果我删除类路径:它会为不正确的部署的完整路径添加前缀
    【解决方案2】:

    以下是生成空 wsdl 位置的方法

    <wsdlOptions>
      <wsdlOption>
        <wsdl>${basedir}/src/main/wsdl/service.wsdl</wsdl>
        <extraargs>
          <extraarg>-wsdlLocation</extraarg>
          <wsdlurl />
        </extraargs>
      </wsdlOption>
    </wsdlOptions>
    

    然后客户端可以接收 wsdl 位置作为参数并成为可移植客户端。这就是为什么我一直在寻找使用相对路径:实现便携式客户端

    【讨论】:

    • 注意这种方法不会使用 WSDL 中的策略。
    【解决方案3】:

    wsdl2java 工具有一个 -wsdlLocation 标志,可用于指定放置在其中的确切字符串。

    【讨论】:

    • 我想我不够清楚。我想将 wsdlLocation 设置为相对路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2010-12-13
    • 2017-05-30
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多