2013-03-20 46 views
0

我消耗了web服務在WSDL文件中包含進口其他WSDL和XSD模式,如:工具下載/導入的WSDL文件爲JAX-WS客戶

<import namespace="http://my.api.com/" location="http://other.server.com:8888/context/services/MyService?wsdl=1"/> 

這反過來又可以導入其他文件

<xsd:import namespace="http://my.api.com/" schemaLocation="http://other.server.com:8888/context/services/MyService?xsd=1"/> 

客戶端由cxf與maven插件生成。主WSDL文件被添加爲類路徑資源。但是,在運行時,客戶端實際需要訪問other.server.com:8888才能完全解析WSDL。所以問題是,是否存在用於導入和解析WSDL中的所有URL的工具,以便它不是在WSDL中的其他導入中的從屬絕對服務器URL,並且適合包含在客戶端項目中?

我們不控制WSDL,所以我們無法在源代碼中對其進行更改。

編輯:尋找一個工具,在Linux上

工作
+0

看來,這可能與SoapUI,儘管我更喜歡命令行工具的工作。 – NilsH 2013-03-20 11:18:31

回答

1

檢查ServiceModel Metadata Utility Tool (Svcutil.exe)從Windows SDK。

svcutil /t:metadata http://service/metadataEndpoint 

此工具定位發現的,描述使用Web服務描述語言(WSDL)特定的XML Web服務的一個或多個相關文件。

+0

謝謝,但我希望能在Linux上工作。 – NilsH 2013-03-21 06:38:35

0

我不知道我是否正確理解你的問題。我也在和Jax-ws/SOAP進行過戰鬥。 :)

如果您需要生成調用webservice所需的java類,則可以使用Apache CXF。它裏面有一個wsdl2java。你可以在linux上使用它。 Java SDK中的另一個選項,在bin文件夾中還有可以使用它的wsimport。

編輯:您可以使用Apache CXF創建的Service類在運行時更改最終的URL。

new SomeRandomJaxWSService(new URL(wsdl),new QName(namespace, serviceName)) 
+0

問題不在於生成文件,而在於生成內部名稱空間時引用本地而不是遠程URI。 – NilsH 2013-06-24 17:53:38