2010-04-13 12 views
18

मैं किसी ऑब्जेक्ट पेड़ में एक XML फ़ाइल को अनारर्शल करने के लिए JAXB का उपयोग कर रहा हूं। रूट ऑब्जेक्ट गैर-शून्य है, लेकिन एक्सएमएल फ़ाइल में डेटा होने के बावजूद इसके सभी सदस्य शून्य हैं। मेरी ऑब्जेक्ट कक्षाएं wxdls से एक्सिस 2 के साथ उत्पन्न हुई थीं। मैं ObjectFactory वर्ग, jaxb.index वर्ग, package.info एनोटेशन, आदिJAXB Unmarshall ने एक खाली ऑब्जेक्ट बनाया

मेरे समस्या इस चर्चा के समान ही है: http://old.nabble.com/AXIS2,-JAXB---Unmarshalling-td26847419.html

सबसे पहले: वहाँ एक तरह से मैं यह मिल सकता है डेटा को सही ढंग से भरने के लिए?

यदि नहीं, तो क्या एक्सिस 2 या जेएक्सबी के लिए एक अच्छी विकल्प लाइब्रेरी है जो एक ही चीज करता है लेकिन यह एक-दूसरे के साथ अच्छी तरह से खेलेंगे?

+0

इससे पहले कि हम इसका उत्तर दे सकें, हमें कुछ नमूना जेएक्सबी कक्षाओं और एक्सएमएल की आवश्यकता होगी। – skaffman

+0

क्या आपको पता चला कि इस समस्या का कारण क्या है? – Kimble

उत्तर

46

डिफ़ॉल्ट रूप से जेएक्सबी त्रुटियों को अनदेखा करता है। मुझे कोई कारण नहीं दिख रहा है कि यह डिफ़ॉल्ट कॉन्फ़िगरेशन क्यों है। कुछ गलत होने पर अपवाद फेंकने के लिए इस कोड को जोड़ने का प्रयास करें।

unmarshaller.setEventHandler(
    new ValidationEventHandler() { 
     public boolean handleEvent(ValidationEvent event) { 
      throw new RuntimeException(event.getMessage(), 
             event.getLinkedException()); 
     } 
}); 
+3

+10! एक घंटे के अंतहीन सिर झुकाव के बाद मैं आपकी नोक पर पहुंचा। धन्यवाद ... – Ittai

+0

महान सुझाव। हालांकि, मैं जेएक्सबी डेवलपर्स को बहुत अच्छा नहीं मानने के खिलाफ सावधानी बरतता हूं - जेएक्सबी का अधिकांश जेनकिन्स, कोहसुक कवागुची के पीछे प्रतिभा द्वारा लिखा गया था। एक प्लग करने योग्य घटना हैंडलर के लिए अनुमति देने से बड़ी लचीलापन (सादगी की लागत पर) की अनुमति मिलती है। – JaysonRaymond

+2

@ जेसन रेमंड - आप सही हैं, मुझे उन शब्दों का उपयोग नहीं करना चाहिए। हालांकि, अभी पता चला है कि मैं दो दिनों के काम को बर्बाद कर दूंगा क्योंकि जेएक्सबी चुपचाप त्रुटियों को अनदेखा कर रहा था, कम से कम कहने के लिए। मैं दृढ़ता से यह मानता हूं कि यह डिफ़ॉल्ट कॉन्फ़िगरेशन नहीं होना चाहिए, लेकिन मैं अपने उत्तर पर शब्द संपादित कर दूंगा। –

0

बस को जोड़ने के लिए है कि जब Axis2 किले की दीवार (सोप शरीर एन्क्रिप्शन) और JAXB के साथ एक साथ प्रयोग किया जाता है, इस मुद्दे को हमेशा होता है चाहता हूँ।

जानकारी के लिए देखें: AXIS2-4981

1

हाल ही में मैं इस मुद्दे के समान तरह का था, और सक्षम यह नीचे के रूप में अप ठीक करने के लिए कर सकते हैं:

1) XSD फ़ाइल Fixup। मेरे मामले में मैंने यह सुनिश्चित किया है कि एक्सएसडी में सभी जटिल तत्व रेफरी एट्रिब्यूट का उपयोग करके अपने संबंधित प्रकार को रेफर कर रहे हैं, उन्हें टाइप विशेषता के साथ घोषित करने के बजाय।

मैंने सत्यापित किया है कि क्या मेरा xsd एक्लिप्स में एक्सएमएल स्कीमा फ़ाइल विकल्प से एक्सएमएल फ़ाइल बनाकर उचित है या नहीं।

फ़िक्स से पहले, xml फ़ाइल में मूल तत्व खाली था। Xsd को ठीक करने के बाद xml कुछ नमूना मानों के साथ ठीक से बनाया गया था।

2) स्वच्छ और पुन: निर्माण कक्षाओं को फिर से उत्पन्न करने से पहले साफ करना अनिवार्य है।

0

पैकेज-info.java फ़ाइल संकलित की जानी चाहिए। ग्रहण सभी .java फ़ाइलों को ढूंढना चाहिए और उन्हें संकलित करना चाहिए। यदि कमांड लाइन से संकलित हो रहा है, और निर्भरता के लिए javac खोज दे रहा है, तो उसे यह नहीं मिलेगा। फिर जब आप दौड़ते हैं तो आपको खाली वस्तुएं मिलेंगी। जेएक्सबी में एक बग की तरह लगता है कि कम से कम उस फाइल को कहीं भी आयात न करें। और त्रुटि आपको उस फाइल को संकलित करने के लिए बताना चाहिए।

संबंधित मुद्दे