2015-04-16 42 views
0

我們有一個wsdl,我們想在Mule工作室中使用。我們通過CXF組件生成了Java類。模式中有很多元素是這樣的: <xs:element minOccurs="0" name="SortIndex" nillable="true" type="xs:string"/> 在生成的Java類中,我們將它們作爲JAXBElement,因爲它很難與DataMapper中的那些一起使用,所以它不太好。我看到這種行爲可以通過提供jaxb綁定來重寫。然而,這是我們現在的WSDL的樣子:從mule的wsdl生成的JAXBElements

<wsdl:portType name="ILegacy"> 
    <jaxws:bindings 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      wsdlLocation="src\main\resources\Legacy.wsdl" 
      xmlns="http://java.sun.com/xml/ns/jaxws" 
      xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"> 
     <enableWrapperStyle>false</enableWrapperStyle> 
     <jaxb:globalBindings generateElementProperty="false"/> 
    </jaxws:bindings> 

然而,這並沒有改變JAXBElements的產生。這段代碼有什麼問題嗎?

回答

0

你是起訴wsdl2java還是xjc?或者是其他東西?

如果您正在使用CXF的WSDL2Java或XJC在你的綁定文件作爲參數傳遞到命令:

bindings123.xjb:

<jaxws:bindings 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      wsdlLocation="src\main\resources\Legacy.wsdl" 
      xmlns="http://java.sun.com/xml/ns/jaxws" 
      xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"> 
     <enableWrapperStyle>false</enableWrapperStyle> 
     <jaxb:globalBindings generateElementProperty="false"/> 
    </jaxws:bindings> 

然後使用-b傳遞綁定文件到JAXB :

xjc schema1.xsd schema2.xsd schema3.xsd -b bindings123.xjb 
+0

Hej Ryan!我已經開始解釋我們如何生成它們了:「我們有一個wsdl,我們希望在Mule studio中使用,我們通過CXF組件生成了Java類。」所以,我們通過Mule studio生成了Java類,其中沒有這樣的選項使用-b和外部jaxws綁定文件運行。 –