2011-08-22 30 views
7

समझने में विफल रहता है मेरे पास जावा/जेडीके 1.6, ग्रहण आदि के साथ नवीनतम संस्करण का सामान्य माइक्रोसॉफ्ट webservice और सामान्य सीएक्सएफ है। जब मैं wsdl2java चला रहा हूं, तो JAXB भाग एक त्रुटि फेंकता है "JAXB द्वारा फेंका: अपरिभाषित तत्व घोषणा की: स्कीमा '"माइक्रोसॉफ्ट webservice और सीएक्सएफ क्लाइंट: जेएक्सबी "एस: स्कीमा"

wsdl जो का हिस्सा यह कैसा दिखता कारण बनता है:

<s:element name="GetDepartmentsResponse"> 
<s:complexType> 
    <s:sequence> 
    <s:element minOccurs="0" maxOccurs="1" name="GetDepartmentsResult"> 
    <s:complexType> 
    <s:sequence> 
     <s:element ref="s:schema" /> 
     <s:any /> 
    </s:sequence> 
    </s:complexType> 
    </s:element> 
    </s:sequence> 
</s:complexType> 
</s:element> 

मैं बस हर जगह <s:element ref="s:schema" /> हटाने और <s:any/> रखने कर सकते हैं? यह जावा < -> माइक्रोसॉफ्ट webservices intreroperability के लिए सामान्य बाधा की तरह दिखता है। लेकिन मुझे सीएक्सएफ के लिए कोई कामकाज नहीं मिल रहा है।

आप

उत्तर

7

आमतौर पर आप स्कीमा रेफरी को हटा सकते हैं धन्यवाद। आपको <s:any> से <s:any maxOccurs="2"> या यह सुनिश्चित करने के लिए समान होना चाहिए कि स्कीमा तत्व और उसके बाद की कोई भी चीज़ दोनों के लिए जगह हो।

0

व्यक्तिगत रूप से, मैं आपके डब्लूएसडीएल को संशोधित करने का सुझाव नहीं दूंगा। डब्ल्यूएसडीएल सेवा द्वारा लगाए गए अनुबंध को परिभाषित कर रहा है, और यह वास्तव में कुछ नहीं है जो आपको अपने ग्राहक में बदलना चाहिए। यदि आप https://stackoverflow.com/a/19126124/1732319 पर उत्तर पर एक नज़र डालें तो यह वर्णन करता है कि s:schema से ठीक से निपटने के लिए आप wsdl2java कैसे प्राप्त कर सकते हैं।

मैं अपने प्रोजेक्ट में CXF codegen Maven प्लगइन का उपयोग कर रहा है और निम्नलिखित विन्यास है:

<configuration> 
    <fork>once</fork> 
    <additionalJvmArgs>-Djavax.xml.accessExternalDTD=all -Djavax.xml.accessExternalSchema=all</additionalJvmArgs> 
    <sourceRoot>${project.build.directory}/generated-sources</sourceRoot> 
    <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot> 
    <defaultOptions> 
     <bindingFiles> 
      <bindingFile>http://www.w3.org/2001/XMLSchema.xsd</bindingFile> 
      <bindingFile>${basedir}/src/main/resources/customisation.xjb</bindingFile> 
     </bindingFiles> 
    </defaultOptions> 
</configuration> 

customisation.xjb जवाब मैं संदर्भ ऊपर से लिया जाता है।