2012-09-12 10 views
18

मैं आरएसए 7.5 और वेबस्पेयर 7 सर्वर का उपयोग कर आईबीएम जेएक्स_डब्लूएस वेब सेवा विकसित करने की कोशिश कर रहा हूं। चूंकि मैं एक नौसिखिया हूं, इसलिए मैं जावा-क्लास का पहला दृष्टिकोण देख रहा हूं यानी मैं पहले जावा क्लास बना रहा हूं और फिर डब्लूएसडीएल फाइल उत्पन्न कर रहा हूं।अवैध अज्ञात अपवाद: कक्षा में एक ही नाम के दो गुण हैं

java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 IllegalAnnotationsException की गिनती

जब मैं WSDL फ़ाइल बनाने का प्रयास करें, मैं एक अपवाद हो रही है कक्षा में एक ही नाम "planId" के दो गुण है

मेरी कक्षा यहाँ संदर्भित इस तरह दिखता है:

public class MemberDetails{ 
    @XMLElement(required=true) 
    private String planId; 
    //public getters and setters for the planId; 
} 

मैं न किसी भी विचार है यह अपवाद क्यों हो रहा है। के माध्यम से गूगल खोज मैं इसे हल करने के लिए कुछ विकल्प की कोशिश की लेकिन उनमें से कोई भी मुझे :(लिए काम किया

नोट:।

यह केवल एनोटेशन मैं अपने कार्यक्षेत्र भर का उपयोग कर रहा है मैं इस करता है, तो यकीन नहीं है कुछ अन्य टिप्पणियों पर निर्भर है या नहीं। लेकिन मैंने @XMLElement (name = "plan", आवश्यक = सत्य), @XMLType, आदि जैसे कुछ लोगों के साथ प्रयास किया लेकिन हर बार मुझे यह अपवाद मिल रहा है।

यह अपवाद wsgen के दौरान होता है। (java.lang.reflect.InvocationTargetException)

संपादित

असल में, जब हम जावा सेवा विधि से एक wsdl बना सकते हैं और सोप यूआई में है कि डबल्यूएसडीएल खोलते हैं, तो हम <!--Optional--> हर तत्व के शीर्ष पर मिलता है। मैं इस विकल्प टैग <!--Optional--> टैग को हटाना चाहता हूं, इसलिए मैं @XMLElement (आवश्यक = सत्य) दृष्टिकोण की कोशिश कर रहा हूं ताकि जब मैं SOAP UI <!--Optional--> में WSDL खोलूं तो अनिवार्य तत्वों के लिए प्रकट नहीं होता है।

(अपेक्षित = true) 1 अर्थात शून्य से अधिक है और इसलिए वैकल्पिक टिप्पणी डबल्यूएसडीएल से निकाल दिया जाएगा, जब मैं सोप यूआई में खोलने के लिए minOccurs सेट हो जाएगा मेरी अवधारणा, @XMLElement के अनुसार। लेकिन दुर्भाग्य से यह काम नहीं कर रहा है इसलिए मेरी अवधारणा गलत है। WSDL उत्पन्न होने के बाद, मैं देख सकता हूं कि minOccurs अभी भी 0.

कृपया बताएं कि जब मैं SOAP UI में WSDL खोलता हूं तो मैं वैकल्पिक टैग को कैसे हटा सकता हूं।

सादर,

उत्तर

37

डिफ़ॉल्ट रूप से JAXB (JSR-222) कार्यान्वयन सार्वजनिक एक्सेसर तरीकों और एनोटेट क्षेत्रों की प्रक्रिया।यदि आप एक क्षेत्र आप भी/सेट तरीकों मिलता है कि व्याख्या तो आप इस अपवाद मिल जाएगा के लिए:

आप तो खेतों टिप्पणी करने के लिए जा रहे हैं आप @XmlAccessorType(XmlAccessType.FIELD)

@XmlAccessorType(XmlAccessType.FIELD) 
public class MemberDetails{ 
    @XMLElement(required=true) 
    private String planId; 
    //public getters and setters for the planId; 
} 

निर्दिष्ट करना चाहिए या आप संपत्ति पर टिप्पणी कर सकते

public class MemberDetails{ 

    private String planId; 

    @XMLElement(required=true) 
    public String getPlanId() { 
     return planId; 
    } 
} 

अधिक जानकारी के लिए

+0

प्रतिक्रिया के लिए धन्यवाद। जिस तरह से आपने सुझाव दिया है, वैसे भी डब्लूएसडीएल किसी भी wsgen अपवाद के बिना बनाया जा रहा है। लेकिन मेरा लक्ष्य हासिल नहीं हुआ है। मैंने अपनी उपरोक्त पोस्ट को संपादित करने के लिए संपादित किया है ताकि मैं किसी भी चीज को हासिल करने की कोशिश कर रहा हूं। कृपया पहले पोस्ट के संपादित अनुभाग और सहायता पर एक नज़र डालें। – user182944

+1

अच्छी तरह से समझाया। – lwpro2

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