2016-01-21 70 views
0

我正在使用CXF創建合同的第一個webservices類。 我有一個wsdl,它有一個xsds導入的負載。 這些xsds都在我的Java項目中的一個包中。CXF wsimport多個模式的XJB綁定添加XmlRootElement註釋

我已經創建了一個XJB文件,它可以完成我想要的工作,但是如果我將要使用很多xsds,需要佔用太多的代碼才能維護。任何解決方案將不勝感激。

XJB:

<jaxb:bindings schemaLocation="wsdl-xsd/contacts_input.xsd#REQUESTType" 
    node="/xs:schema"> 
    <jaxb:bindings node="//xs:complexType[@name='REQUESTType']"> 
     <annox:annotate target="class"> 
      <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" 
       name="REQUESTType" /> 
     </annox:annotate> 
    </jaxb:bindings> 
</jaxb:bindings> 
<jaxb:bindings schemaLocation="wsdl-xsd/contacts_output.xsd#RESPONSEType" 
    node="/xs:schema"> 
    <jaxb:bindings node="//xs:complexType[@name='RESPONSEType']"> 
     <annox:annotate target="class"> 
      <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" 
       name="RESPONSEType" /> 
     </annox:annotate> 
    </jaxb:bindings> 
</jaxb:bindings> 

WSDL:

<!-- Contact Services --> 
     <xsd:import namespace="http://contacts_request.global_test.ws.test.com" schemaLocation="contacts_input.xsd"/> 
     <xsd:import namespace="http://contacts_response.global_test.ws.test.com" schemaLocation="contacts_output.xsd"/> 

回答

0

最終我能夠用簡單的頭腦結合這給了我複雜的元素@XMLROOTELEMENT註釋來解決這個問題。我決定創建一個具有複雜類型的REQUEST/RESPONSE類型的匿名根元素。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
jaxb:version="2.0" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
jaxb:extensionBindingPrefixes="xjc"> 
<jaxb:globalBindings optionalProperty="wrapper"> 
    <xjc:simple /> 
</jaxb:globalBindings>