CXF Webservice客户端中WSDL的相对路径

问题描述:

在我的应用程序中,我使用了许多Web服务。由于WSDL没有改变,我已经将WSDL文件集成到了我的项目中。如果我使用CXF中的WSDL2Java工具,那么WSDL位置绝对路径将被硬编码。CXF Webservice客户端中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 { 

我终于想出了如何在今天正确地做到这一点。只要把这些文件是你的资源文件夹,然后你可以使用wsdlLocation指他们比较像这样:

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

见我的答案在这里一个类似的问题:https://stackoverflow.com/a/9875701/1190144

WSDL2Java工具具有可以用来指定被放置在那里的确切字符串-wsdlLocation标志。

+0

我想我是不太清楚。我想将wsdlLocation设置为相对路径。 – 2010-12-07 23:17:12

这里是一个可以产生一个空的WSDL位置

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

然后,客户机可以接收WSDL位置作为参数,并成为一个便携式客户端做的。这就是为什么我一直在寻找使用相对路径的原因:实现便携式客户端

+0

请注意,使用此方法时,不会使用WSDL中存在的策略。 – Abbadon 2015-10-07 07:08:36