2011-10-31 73 views
0

我正在使用Apache CXF 2.4.2來實現SOAP Web服務。我遵循/修改了教程(請參閱下一個鏈接)以通過合同創建Web服務。Apache CXF wsdl不包含任何數據類型定義

http://confluence.highsource.org/display/HJ3/Apache+CXF+Tutorial+-+Building+JAX-WS,+JAXB+and+JPA-based+web+service+with+Apache+CXF,+Spring+and+Hyperjaxb3

在這個例子中,你可以看到一個WSDL和其中包含的數據模型XSD文件。該數據模型由wsdl文件導入。之後,我使用Maven cxf-codegen-plugin(v.2.4.2)生成代碼。一切似乎都很好。我可以編譯我的項目,也可以使用Eclipse Webservices Explorer在本地maschine上使用web服務。

但在另一臺電腦上,我只能看到web服務的操作。 wsdl不包含數據模型(http:// * **:18080/webservice/Test?wsdl),另一個消費者無法生成客戶端。

我測試,我把數據類型聲明直接到WSDL,但效果是一樣的:-(另一種情況,似乎這樣Apache CXF在內部創建在運行一個新的WSDL。

寫一個wsdl - >生成的代碼 - >的Apache CXF可即時生成WSDL

是否有任何開關,我可以改變這種行爲

感謝

?個

〜克里斯

回答

0

請按照下列步驟操作:

  1. 創建一個文件夾META-INF /你的 '主/資源' 在它的把你的WSDL文件和XSD文件中WSDL。
  2. 這樣設置CXF-CODEGEN-插件的extraarg -wsdlLocation選項(參見http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.htmlhttp://cxf.apache.org/docs/wsdl-to-java.html):

    <wsdlOptions> 
        <wsdlOption> 
        ... 
        <extraargs> 
         ... 
         <extraarg>-wsdlLocation </extraarg> 
         <extraarg>wsdl/yourfile.wsdl</extraarg> 
         ... 
        <extraargs> 
        <wsdlOption> 
        ... 
    <wsdlOptions> 
    
  3. 確認,您的WSDL和XSD是你的罐子內捆綁在一起。應該默認完成。

CXF應該公開您的文件而不是其生成的文件。

0

我在發佈原始WSDL時遇到了問題。

您可以試試這個answer並讓我知道