2012-08-09 8 views
12

एक एसओएपी एंडपॉइंट के लिए क्लाइंट उत्पन्न करने के लिए wsimport का उपयोग करने का प्रयास कर रहा है। डब्ल्यूएसडीएल और उपयोग की जाने वाली सभी एक्सएसडी फाइल स्थानीय प्रतियां हैं।wsimport - दो घोषणाएं टकराव का कारण बनती हैं, उसी पंक्ति को

wsimport ./bwWsdl.xml -p com.generated -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution 

कौन इस त्रुटि देता है:

[ERROR] Two declarations cause a collision in the ObjectFactory class. 
    line 16 of file:/schemas/newSchema.xsd 

[ERROR] (Related to above error) This is the other declaration. 
    line 16 of file:/schemas/newSchema.xsd 

नोट लाइन नंबर की सूचना दी टक्कर के लिए एक ही है

यह आदेश निष्पादित किया जा रहा है।

यहाँ स्कीमा है:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
    version="2.004" id="OTA2003A2009A"> 

    <xs:complexType name="TPA_ExtensionsType"> 
    <xs:annotation> 
     <xs:documentation xml:lang="en">Description here. 
     </xs:documentation> 
    </xs:annotation> 
    <xs:sequence> 
     <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:element name="TPA_Extensions" type="TPA_ExtensionsType"> 
    <xs:annotation> 
     <xs:documentation xml:lang="en">More description here.</xs:documentation> 
    </xs:annotation> 
    </xs:element> 
</xs:schema> 

मैं प्रकार परिभाषा को हटाने की कोशिश की है, लेकिन यह अन्य स्थानों के एक धसान में संदर्भित है।

क्या कोई इसे काम करने के लिए कैसे सलाह दे सकता है?

धन्यवाद

संपादित करें:

यहाँ लाइनों है जहां डबल्यूएसडीएल इन स्कीमा आयात करता है:

<definitions name='ResLookupGet' targetNamespace='http://org.jboss.ws/resLookupGet' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:http='http://schemas.xmlsoap.org/wsdl/http/' xmlns:mime='http://schemas.xmlsoap.org/wsdl/mime/' xmlns:ns='http://www.opentravel.org/OTA/2003/05/beta' xmlns:rq='http://www.opentravel.org/OTA/2003/05/betarq' xmlns:rs='http://www.opentravel.org/OTA/2003/05/betars' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://org.jboss.ws/resLookupGet' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> 
<types> 
    <xsd:schema targetNamespace='http://org.jboss.ws/resLookupGet' xmlns:tns='http://org.jboss.ws/resLookupGet' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> 
    <xsd:import namespace='http://www.opentravel.org/OTA/2003/05/betarq' schemaLocation='./schemas/FooAffiliateHeaderRQ.xsd'/> 
    <xsd:import namespace='http://www.opentravel.org/OTA/2003/05/betarq' schemaLocation='./schemas/FooResLookupGetRQ.xsd'/> 
    <xsd:import namespace='http://www.opentravel.org/OTA/2003/05/betars' schemaLocation='./schemas/FooResLookupGetRS.xsd'/> 
    </xsd:schema> 
</types> 
<message name='ResLookupGetRQ'> 
    <part element='rq:FooResLookupGetRQ' name='FooResLookupGetRQ'></part> 
</message> 
<message name='ResLookupGetRS'> 
    <part element='rs:FooResLookupGetRS' name='FooResLookupGetRS'></part> 
</message> 
+0

कोई भी मौका आप फाइलों का एक सेट पोस्ट कर सकते हैं जो वही देगा? यह त्रुटि संदेश आमतौर पर एक ही परिभाषा को दो बार या उससे अधिक तरीके से लोड करने के कारण होता है जो लोडर को बेस यूआरआई के संबंध में भ्रमित करता है। –

+0

मुझे ऐसा नहीं लगता है - 136 कुल स्कीमा हैं जो इसे संदर्भित कर रहे हैं ... – Cuga

+0

मैं इस समस्या को उत्पन्न करने वाले एक्सएसडी फ़ाइल में पथ को विज़ुअलाइज़/ट्रेस करने का प्रयास करूंगा। यदि यह ओपन ट्रैवल एलायंस पर आधारित है ... मुझे लगता है कि आपने डब्लूएसडीएल बनाया है; क्या आप हाईलेवल संरचना को इंगित कर सकते हैं यानी क्या आप अपने डब्लूएसडीएल से ओटीए एक्सएसडीएस का आयात करते हैं, क्या आप डब्लूएसडीएल में एक्सएसडी सामग्री को परिभाषित करते हैं, या आप एक बाहरी एक्सएसडी आयात करते हैं जो बदले में अन्य सभी को संदर्भित करता है? –

उत्तर

14

मैं अंत में इस अतीत प्राप्त करने में सक्षम था @Petru Gardea की मदद के लिए धन्यवाद wsimport को -p com.generated पैकेज विनिर्देश को छोड़कर। तो यह है कि मैं क्या अंत में इस समस्या को अतीत प्राप्त करने के लिए चलाने के लिए सक्षम किया गया है:

wsimport ./bwWsdl.xml -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution 

यह है wsimport, एक ही नाम और/या विधियों के साथ एक ही पैकेज में कक्षाओं उत्पन्न करने के लिए कोशिश कर रहा है के लिए तर्क जो यह स्पष्ट रूप से ऐसा नहीं कर सकते।

तो मजबूर पैकेज घोषणा को छोड़कर, wsimport कक्षाओं को जो भी पैकेज चाहता है उसे रखने में सक्षम है, जो डब्ल्यूएसडीएल में <xsd:schema> परिभाषा के अनुसार 3 अलग-अलग पैकेज बन जाता है।

धन्यवाद फिर से @ पेट्रू!

+1

जेडीके 1.8 पर, यह भी उपयोगी हो गया है: 'wsimport wsdlName.xml -J-Djavax.xml.accessExternalDTD = सब ... 'साथ ही' wsimport wsdlName.xml -J-Djavax.xml.accessExternalSchema = सभी ... ' – Cuga

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

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