2017-02-19 13 views
9

wsimport और xjc आदेश (जावा जेडीके के हिस्से के रूप में डाउनलोड दोनों) आपूर्ति किए गए jaxb बाध्यकारी फ़ाइल को अनदेखा कर रहे हैं जब लक्षित wsdl/xsds कुछ विशिष्ट पथों के अंतर्गत रखा जाता है।xjc/wsimport - JAXB बाध्यकारी

इस व्यवहार को पुन: पेश करने के लिए, पथ सी: \ का उपयोग किया जा सकता है।

nm.xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:include schemaLocation="name.xsd"/> 
<xs:annotation> 
    <xs:documentation xml:lang="en">Annotation</xs:documentation> 
</xs:annotation> 

<xs:element name="name" type="Name"/> 

<xs:complexType name="FName"> 
<xs:sequence> 
    <xs:element name="value" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 

<xs:complexType name="LName"> 
<xs:sequence> 
    <xs:element name="value" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 

</xs:schema> 

name.xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:complexType name="Name"> 
     <xs:sequence> 
      <xs:element name="FirstName" type="FName"/> 
      <xs:element name="LastName" type="LName"/> 
      <xs:element name="Date" type="xs:date"/> 
     </xs:sequence> 
</xs:complexType> 
</xs:schema> 

bindings.xjb:

<?xml version="1.0" encoding="UTF-8"?> 
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc"> 
    <jxb:globalBindings generateElementProperty="false" collectionType="indexed"> 
     <jxb:javaType name="java.util.Date" xmlType="xs:date" parseMethod="com.company.Converter.parseDate" printMethod="com.company.Converter.printDate"/> 
    </jxb:globalBindings> 
</jxb:bindings> 
इस निर्देशिका में निम्नलिखित XSD फ़ाइलें हैं 10

निम्न आदेश सी से प्रयोग किया जाता है: \ एक JAXB कलाकृतियों उत्पन्न करने के लिए:

xjc -b bindings.xjb nm.xsd 

बंधन पर ध्यान नहीं दिया जा रहा है। जेनरेट क्लास अभी भी xs का उपयोग करते हैं: java.util.Date की बजाय तारीख और एडाप्टर क्लास जेनरेट नहीं हो रहा है। XSD आयात करने वाले wsdl के साथ wsimport का उपयोग करते समय भी समस्या पुन: उत्पन्न होती है।

जब का नाम बदलने एक को, बंधन अपेक्षित ढंग से काम कर रहा है। कुछ पथ काम करते हैं और कुछ अन्य नहीं करते हैं। यह यादृच्छिक प्रतीत होता है, कोई पैटर्न पहचाना नहीं गया था। व्यवहार किसी दिए गए पथ के लिए संगत है। इसे विंडोज 10, विंडोज 7 और यूनिक्स मशीनों पर पुन: उत्पन्न किया गया था। जावा संस्करण का इस्तेमाल 1.7.0_79 था। बाइंडिंग फ़ाइलों का नाम प्रभाव नहीं प्रतीत होता है, लेकिन एक्सएसडी फाइलों का नाम करता है।

इस समस्या का कारण क्या हो सकता है और यह कैसे तय किया जा सकता है? पथ बाध्यकारी को क्यों प्रभावित करता है? क्या कोई कामकाज है जो इस समस्या से बचने में मदद कर सकता है, जबकि बाध्यकारी सुनिश्चित करना बंद नहीं किया जाएगा, भले ही पथ बदल जाए?

+1

मैं आपकी समस्या को पुनः नहीं कर सकता। सबसे पहले, आपके bindings.xjb फ़ाइल के साथ कुछ गलत लगता है। के लिए समापन टैग गुम है। फिर यह पार्सिंग और प्रिंटिंग के लिए एक ही विधि है (कनवर्टर को कन्वर्टर.प्रिंट का प्रिंटमैट के रूप में उपयोग करना चाहिए)। क्या आप कुछ और विवरण दे सकते हैं जिन पर आपने जेडीके 7 का मामूली संस्करण इस्तेमाल किया था और किस निर्देशिका से आपने wsimport कमांड को बुलाया था? और क्या आप निर्देशिका में 'पेड़/एफ' के आउटपुट को मुद्रित कर सकते हैं जिसे आपने wsimport कहा है और wsimport कमांड का आउटपुट स्वयं ही? धन्यवाद! – boskoop

+0

हाय बोस्कोप, आपके उत्तर के लिए धन्यवाद। मैंने वैश्विक बाइंडिंग टैग और printMethod को तय किया (समस्या को प्रभावित नहीं कर रहा था)। मैं jdk1.7.0_79 का उपयोग कर रहा हूँ। मैं इस निर्देशिका को उस निर्देशिका पर पुन: पेश करने का प्रयास करूंगा जो गोपनीय जानकारी का खुलासा नहीं करता और प्रश्न को अद्यतन नहीं करता है। –

+0

नमूना wsdls और xsds –

उत्तर

0

मुझे लगता है कि यह जैक्सबी-एक्सजेसी में एक बग है। एक मुद्दा इन व्यवहार के लिए रिपोर्ट किया गया है:

https://github.com/javaee/jaxb-v2/issues/1121