2011-05-09 9 views
10

के साथ मैं जेएक्सबी और सीएक्सएफ के साथ एक डब्ल्यूएसडीएल पहला webservice बना रहा हूं। मेरे पास डब्लूएसडीएल का स्वामित्व नहीं है, इसलिए मैं इसमें बदलाव नहीं कर सकता। मैं अपने डब्लूएसडीएल के रूप में ftp://ftp.ihe.net/TF_Implementation_Material/ITI/wsdl/PIXManager.wsdl का उपयोग कर रहा हूं। मैंने जावा कक्षाएं उत्पन्न करने के लिए सीएक्सएफ 2.3.0 का उपयोग किया।जेएक्सबी, सीएक्सएफ: तत्व के लिए @XmlElementDecl के साथ कोई ऑब्जेक्ट फैक्ट्री नहीं है ...

जावा वर्ग पीढ़ी ठीक से चला गया, लेकिन जब मैं एक वेब अनुप्रयोग में इस चलाने के लिए कोशिश कर रहा हूँ, मैं कोई त्रुटि मिलती है

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 17 counts of IllegalAnnotationExceptions 

17 मायने रखता है प्रारूप के हैं

There's no ObjectFactory with an @XmlElementDecl for the element {urn:hl7-org:v3}assignedDevice. 
     this problem is related to the following location: 
      at protected javax.xml.bind.JAXBElement org.hl7.v3.QUQIMT021001UV01AuthorOrPerformer.assignedDevice 

जब मैं उल्लिखित कक्षा में जाता हूं, यानी QUQIMT021001UV01AuthorOrPerformer और असाइन किए गए फ़ील्ड को देखें, मुझे यह

@XmlElementRef(name = "assignedDevice", namespace = "urn:hl7-org:v3", type = JAXBElement.class) 
protected JAXBElement<COCTMT090300UV01AssignedDevice> assignedDevice; 

जब मैं पैकेज के ObjectFactory को देखो, मैं इस

private final static QName _COCTMT090303UV01AssignedDeviceAssignedDevice_QNAME = new QName("urn:hl7-org:v3", "assignedDevice"); 

मेरे सभी 17 त्रुटियों समान हैं। मेरी सेवा पाने के लिए मैं अपने कोडजन या रनटाइम के दौरान क्या कर सकता हूं?

+1

मैं अपने codegen में कई WSDLs उपयोग कर रहा था, और कहा कि इन परिभाषाओं में एक संघर्ष पैदा कर रहा था। मैंने इसे एक डब्लूएसडीएल तक छीन लिया और यह ठीक काम करता है। हालांकि मैं देखना चाहता हूं कि कोडेजन में उपयोग किए जाने वाले एकाधिक डब्ल्यूएसएलडी का उपयोग कैसे करें। – rahul

उत्तर

3

रन-टाइम पर आप किस जावा संस्करण का उपयोग कर रहे हैं? provided गुंजाइश के साथ

  1. उपयोग JAXB impl 2.1 * (2.2 के बजाय), करने के लिए: मैं ओटीए स्कीमा के साथ एक समान मुद्दा था जब जावा 6. के साथ चल रहा Maven विन्यास के लिए निम्न परिवर्तन करके समस्या को समाप्त। जावा 6 में शामिल JAXB संस्करण से मिलान करें।
  2. जावा 6 और जेएक्सबी 2.1.x से मेल खाने के लिए जेएक्स-डब्ल्यूएस 2.1 (2.2 के बजाय) का उपयोग करें।
  3. Maven cxf-codegen-plugin प्लग-इन करने के लिए विकल्प frontEnd जोड़ें और jaxws21 के लिए सेट (या कमांड लाइन पर wsdl2java का उपयोग कर अगर, का उपयोग करें "-fe jaxws21" विकल्प)।
+0

आपके विचारों के लिए धन्यवाद। मैंने इन चीजों को आजमाया, और आखिरकार इन सेवाओं को संभालने के लिए जावा/सीएक्सएफ से दूर करने का फैसला किया। मैंने ग्रोवी आधारित स्प्रिंग कंट्रोलर बनाने का फैसला किया जो ग्रोवीजुडनेस ™ एक्सएमएल प्रोसेसिंग का उपयोग करता है। – rahul

1

जब आप कक्षाएं उत्पन्न करते हैं, तो आप jaxb.properties नामक फ़ाइल भी उत्पन्न करते हैं। सुनिश्चित करें कि यह फ़ाइल रनटाइम पर एप्लिकेशन के लिए सुलभ है। मुझे एक ही समस्या थी और यह मैवेन पैकेजिंग के कारण था: मैवेन पैकेज संसाधन फ़ाइलों (जैसे जैक्सब.प्रोपर्टीज) में शामिल नहीं होगा जो कि स्रोत/मुख्य/जावा पेड़ के नीचे हैं जब तक विशेष रूप से ऐसा करने का निर्देश नहीं दिया जाता है। मैंने org.codehaus.mojo का उपयोग करके ऐसा किया: बिल्ड-हेल्पर-मैवेन-प्लगइन ऐड-रिसोर्स लक्ष्य के साथ। उम्मीद है कि यह

0

मुझे इस तरह की त्रुटि का सामना करना पड़ा और कारण वेबसाइडिस स्टब जावा कक्षाओं के बीच संघर्ष हो रहा था।

यदि उपर्युक्त उत्तर काम नहीं करते हैं, तो संघर्षों की तलाश करें।

एक समय में एक स्टब जोड़ें और वृद्धिशील जोड़ें।

आशा है कि यह मदद करता है

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

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