2010-12-02 39 views
4

在我的應用程序中,我使用了許多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 { 

回答

11

我終於想出瞭如何在今天正確地做到這一點。只要把這些文件是你的資源文件夾,然後你可以使用wsdlLocation指他們比較像這樣:

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

見我的答案在這裏一個類似的問題:https://stackoverflow.com/a/9875701/1190144

0

WSDL2Java工具具有可以用來指定被放置在那裏的確切字符串-wsdlLocation標誌。

+0

我想我是不太清楚。我想將wsdlLocation設置爲相對路徑。 – 2010-12-07 23:17:12

1

這裏是一個可以產生一個空的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