2012-04-11 25 views
7

मैं axis2 (संस्करण 1.6.1) से wsdl2java के साथ एक webservice क्लाइंट उत्पन्न करने का प्रयास कर रहा हूं।अपाचे अप्रत्याशित उपखंड अपवाद एक webservice क्लाइंट उत्पन्न करते समय

./wsdl2java.sh -uri http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/v2.0/efetch_snp.wsdl 

जब मैं इस सेवा को कॉल करता हूं, तो मुझे अपवाद मिलता है।

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {http://www.ncbi.nlm.nih.gov/soap/eutils/efetch_snp}Rs

try { 
     EFetchSnpServiceStub fetchService = new EFetchSnpServiceStub(); 
     EFetchSnpServiceStub.EFetchRequest reqIdSnp = new EFetchSnpServiceStub.EFetchRequest(); 
     reqIdSnp.setId("193925233"); 
     EFetchSnpServiceStub.EFetchResult resIdSnp = fetchService.run_eFetch(reqIdSnp); 
    } catch (Exception e) { 
     System.out.println(e.toString()); 
    } 
soaptest साथ

लेकिन मैं परिणाम में रुपये टैग देख सकते हैं।

<Rs rsId="193925233" snpClass="snp" snpType="notwithdrawn" molType="genomic" bitField="050000000005000000000100" taxId="3702"> 

मैं इस अपवाद को कैसे ठीक कर सकता हूं? डब्ल्यूएसडीएल मेरे नियंत्रण में नहीं है।

+0

कोई "हालांकि" नहीं है - एक्सिस तत्व के बारे में शिकायत करता है, अनुपस्थित नहीं है। –

+0

हां लेकिन मैं यह कर क्या कर सकता हूं कि अक्ष इस टैग को स्वीकार करता है? –

+0

कोई भी प्रतिक्रिया पूरी करने से पहले इसका जवाब नहीं दे सकता है, कम से कम उस बिंदु तक जहां तत्व 'रुपये' होता है, साथ ही साथ डब्लूएसडीएल (तत्व प्रकार घोषणाओं) के प्रासंगिक भाग भी होते हैं। हो सकता है कि सेवा की प्रतिक्रिया वास्तव में डब्लूएसडीएल अनुबंध का उल्लंघन कर रही है, जो पूरी तरह से संभव है। हो सकता है कि यह आपके पास एक नया डब्लूएसडीएल का उपयोग करे। –

उत्तर

11

अप्रत्याशित उपखंड त्रुटि ज्यादातर एडीबी डाटाबेसिंग प्रकार में एक्सिस 2 में होती है। जब SOAP प्रतिक्रिया में आने वाले टैग का अनुक्रम wsdl से बने जावा क्लास में विशेषताओं के समान नहीं है।

उदाहरण के लिए,

प्रतिक्रिया या अनुरोध एक्सएमएल होना आवश्यक है तो क, ख, ग एक क्रम में तत्वों और वास्तविक एक्सएमएल ए, डी, अनुक्रम में ग तत्वों, तो Axis2 शिकायत करेगा गया है कह रही है कि यह एक अप्रत्याशित तत्व नाम डी प्राप्त किया।

इसे wsdl में टैग के अनुक्रम को बदलकर हल किया जा सकता है।

नोट: If this is not the case, check here for other reasons

+0

लिंक टूटा हुआ प्रतीत होता है। – Eyal

+0

आप इसे इसके बजाय देख सकते हैं: [http://axis.apache.org/axis2/java/core/faq.html#unexpected_subelement ](http://axis.apache.org/axis2/java/core/faq। एचटीएमएल # unexpected_subelement) – Carlos

1

मैं सिर्फ एन सी बी आई eutils के साथ एक ही समस्या थी और संपादन WSDL फ़ाइल और फिर स्थानीय स्तर पर ग्राहक वर्गों पुनः द्वारा इसे हल। मैंने बहुत तेज़ इस्तेमाल किया क्योंकि आपने यह देखने के लिए वास्तव में क्या किया था और फिर उन्हें मैच बना दिया। मेरे मामले में, वे अपने DbInfoType ऑब्जेक्ट में "DbBuild" नामक तत्व खो रहे थे।