2010-04-12 10 views
5

मैंने अपाचे सीएक्सएफ 2.2.7 और स्प्रिंग 3 का उपयोग करके एक सरल वेब सेवा एप्लिकेशन विकसित किया है, जिसे वॉर फ़ाइल के रूप में टोमकैट पर तैनात किया गया है, लेकिन मुझे निम्नलिखित मिल रहा है त्रुटि संदेश:अपाचे सीएक्सएफ 2.2.7 स्प्रिंग 3 वेब सेवा Unmarshalling त्रुटि: अप्रत्याशित तत्व

12-Apr-2010 15:56:12 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging WARNING: Interceptor for { http://services.aristabi.com/ }ReportingServiceImplService#{ http://services.aristabi.com/ }getNewBusinessVolumeByCreateDate_v2 has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:" http://services.aristabi.com/ ", local:"searchCriteria"). Expected elements are <{}searchCriteria> at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:764) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:623) at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128) at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:106) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109) at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:406) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178) at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) Caused by: javax.xml.bind.UnmarshalException - with linked exception: [javax.xml.bind.UnmarshalException: unexpected element (uri:" http://services.aristabi.com/ ", local:"searchCriteria"). Expected elements are <{}searchCriteria>] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:749) ... 25 more Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:" http://services.aristabi.com/ ", local:"searchCriteria"). Expected elements are <{}searchCriteria> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.childElement(Loader.java:101) at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.childElement(StructureLoader.java:245) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459) at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:242) at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:176) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360) ... 27 more Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:" http://services.aristabi.com/ ", local:"searchCriteria"). Expected elements are <{}searchCriteria> ... 38 more

यह शायद एक साधारण मुद्दा है, लेकिन मैं इसे हल करने में सक्षम नहीं लग रहा हूं। क्या कोई मुझे इस मुद्दे को हल करने के लिए सही दिशा में इंगित कर सकता है?

धन्यवाद, Zahanghir

Btw, इस

तरह
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="ReportingServiceImplService" targetNamespace="http://services.aristabi.com/" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://services.aristabi.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<wsdl:types> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://services.aristabi.com/" xmlns:tns="http://services.aristabi.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="getNewBusinessVolumeByCreateDate" type="tns:getNewBusinessVolumeByCreateDate" /> 
<xs:element name="getNewBusinessVolumeByCreateDateResponse" type="tns:getNewBusinessVolumeByCreateDateResponse" /> 
<xs:element name="getNewBusinessVolumeByCreateDate_v2" type="tns:getNewBusinessVolumeByCreateDate_v2" /> 
<xs:element name="getNewBusinessVolumeByCreateDate_v2Response" type="tns:getNewBusinessVolumeByCreateDate_v2Response" /> 
<xs:element name="newBusinessLead" type="tns:newBusinessLead" /> 
<xs:element name="quotes" type="tns:quotes" /> 
<xs:element name="searchCriteria" type="tns:searchCriteria" /> 
<xs:complexType name="getNewBusinessVolumeByCreateDate"> 
<xs:sequence> 
    <xs:element minOccurs="0" name="agent" type="xs:string" /> 
    <xs:element minOccurs="0" name="broker" type="xs:string" /> 
    <xs:element minOccurs="0" name="businessUnit" type="xs:string" /> 
    <xs:element minOccurs="0" name="fromMonth" type="xs:string" /> 
    <xs:element minOccurs="0" name="fromYear" type="xs:string" /> 
    <xs:element minOccurs="0" name="region" type="xs:string" /> 
    <xs:element minOccurs="0" name="toMonth" type="xs:string" /> 
    <xs:element minOccurs="0" name="toYear" type="xs:string" /> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="getNewBusinessVolumeByCreateDateResponse"> 
<xs:sequence> 
    <xs:element minOccurs="0" name="return" type="tns:newBusinessLead" /> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="newBusinessLead"> 
<xs:sequence> 
    <xs:element maxOccurs="unbounded" minOccurs="0" name="convertedQuotes" nillable="true" type="tns:quotes" /> 
    <xs:element maxOccurs="unbounded" minOccurs="0" name="declinedQuotes" nillable="true" type="tns:quotes" /> 
    <xs:element maxOccurs="unbounded" minOccurs="0" name="ntuQuotes" nillable="true" type="tns:quotes" /> 
    <xs:element maxOccurs="unbounded" minOccurs="0" name="pendingQuotes" nillable="true" type="tns:quotes" /> 
    </xs:sequence> 
</xs:complexType> 
<xs:complexType name="quotes"> 
<xs:sequence> 
    <xs:element minOccurs="0" name="month" type="xs:string" /> 
    <xs:element name="premium" type="xs:int" /> 
    <xs:element minOccurs="0" name="quoteStatus" type="xs:string" /> 
    <xs:element name="volume" type="xs:int" /> 
    <xs:element minOccurs="0" name="year" type="xs:string" /> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="arrayList"> 
<xs:complexContent> 
    <xs:extension base="tns:abstractList"> 
    <xs:sequence /> 
    </xs:extension> 
</xs:complexContent> 
</xs:complexType> 
<xs:complexType abstract="true" name="abstractList"> 
<xs:complexContent> 
    <xs:extension base="tns:abstractCollection"> 
    <xs:sequence /> 
    </xs:extension> 
</xs:complexContent> 
</xs:complexType> 
<xs:complexType abstract="true" name="abstractCollection"> 
<xs:sequence /> 
</xs:complexType> 
<xs:complexType name="getNewBusinessVolumeByCreateDate_v2"> 
<xs:sequence> 
    <xs:element minOccurs="0" name="searchCriteria" type="tns:searchCriteria" /> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="searchCriteria"> 
<xs:sequence> 
    <xs:element minOccurs="0" name="agent" type="xs:string" /> 
    <xs:element minOccurs="0" name="broker" type="xs:string" /> 
    <xs:element minOccurs="0" name="businessUnit" type="xs:string" /> 
    <xs:element minOccurs="0" name="fromMonth" type="xs:string" /> 
    <xs:element minOccurs="0" name="fromYear" type="xs:string" /> 
    <xs:element minOccurs="0" name="region" type="xs:string" /> 
    <xs:element minOccurs="0" name="toMonth" type="xs:string" /> 
    <xs:element minOccurs="0" name="toYear" type="xs:string" /> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="getNewBusinessVolumeByCreateDate_v2Response"> 
<xs:sequence> 
    <xs:element minOccurs="0" name="return" type="tns:newBusinessLead" /> 
</xs:sequence> 
</xs:complexType> 
<xs:element name="InvalidUserCredentialsException" type="tns:InvalidUserCredentialsException" /> 
<xs:complexType name="InvalidUserCredentialsException"> 
<xs:sequence /> 
</xs:complexType> 
<xs:element name="tokenString" nillable="true" type="xs:string" /> 
</xs:schema> 
</wsdl:types> 
<wsdl:message name="InvalidUserCredentialsException"> 
<wsdl:part element="tns:InvalidUserCredentialsException" name="InvalidUserCredentialsException"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="getNewBusinessVolumeByCreateDateResponse"> 
<wsdl:part element="tns:getNewBusinessVolumeByCreateDateResponse" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="getNewBusinessVolumeByCreateDate"> 
<wsdl:part element="tns:getNewBusinessVolumeByCreateDate" name="parameters"> 
</wsdl:part> 
<wsdl:part element="tns:tokenString" name="tokenString"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="getNewBusinessVolumeByCreateDate_v2Response"> 
<wsdl:part element="tns:getNewBusinessVolumeByCreateDate_v2Response" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:message name="getNewBusinessVolumeByCreateDate_v2"> 
<wsdl:part element="tns:getNewBusinessVolumeByCreateDate_v2" name="parameters"> 
</wsdl:part> 
</wsdl:message> 
<wsdl:portType name="IReportingService"> 
<wsdl:operation name="getNewBusinessVolumeByCreateDate"> 
    <wsdl:input message="tns:getNewBusinessVolumeByCreateDate" name="getNewBusinessVolumeByCreateDate"> 
</wsdl:input> 
    <wsdl:output message="tns:getNewBusinessVolumeByCreateDateResponse" name="getNewBusinessVolumeByCreateDateResponse"> 
</wsdl:output> 
</wsdl:operation> 
<wsdl:operation name="getNewBusinessVolumeByCreateDate_v2"> 
    <wsdl:input message="tns:getNewBusinessVolumeByCreateDate_v2" name="getNewBusinessVolumeByCreateDate_v2"> 
</wsdl:input> 
    <wsdl:output message="tns:getNewBusinessVolumeByCreateDate_v2Response" name="getNewBusinessVolumeByCreateDate_v2Response"> 
</wsdl:output> 
    <wsdl:fault message="tns:InvalidUserCredentialsException" name="InvalidUserCredentialsException"> 
</wsdl:fault> 
</wsdl:operation> 
</wsdl:portType> 
<wsdl:binding name="ReportingServiceImplServiceSoapBinding" type="tns:IReportingService"> 
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
<wsdl:operation name="getNewBusinessVolumeByCreateDate"> 
    <soap:operation soapAction="" style="document" /> 
    <wsdl:input name="getNewBusinessVolumeByCreateDate"> 
    <soap:header message="tns:getNewBusinessVolumeByCreateDate" part="tokenString" use="literal"> 
    </soap:header> 
    <soap:body parts="parameters" use="literal" /> 
    </wsdl:input> 
    <wsdl:output name="getNewBusinessVolumeByCreateDateResponse"> 
    <soap:body use="literal" /> 
    </wsdl:output> 
</wsdl:operation> 
<wsdl:operation name="getNewBusinessVolumeByCreateDate_v2"> 
    <soap:operation soapAction="" style="document" /> 
    <wsdl:input name="getNewBusinessVolumeByCreateDate_v2"> 
    <soap:body use="literal" /> 
    </wsdl:input> 
    <wsdl:output name="getNewBusinessVolumeByCreateDate_v2Response"> 
    <soap:body use="literal" /> 
    </wsdl:output> 
    <wsdl:fault name="InvalidUserCredentialsException"> 
    <soap:fault name="InvalidUserCredentialsException" use="literal" /> 
    </wsdl:fault> 
</wsdl:operation> 
</wsdl:binding> 
<wsdl:service name="ReportingServiceImplService"> 
<wsdl:port binding="tns:ReportingServiceImplServiceSoapBinding" name="ReportingServiceImplPort"> 
    <soap:address location="http://localhost:8889/AristaInsuranceServices/reportingService" /> 
</wsdl:port> 
</wsdl:service> 
</wsdl:definitions> 

मैं एक XSD नहीं है मेरी wsdl दिखाई देता है। क्या आप कृपया बता सकते हैं कि डब्ल्यूएसडीएल के साथ क्या गलत है?

उत्तर

4

आने वाला संदेश अमान्य है। असल में, यह स्कीमा से मेल नहीं खाता है।

<ns1:searchCriteria> ..... </ns1:searchCriteria> 

या संभवतः कोई नामस्थान उपसर्ग के साथ, लेकिन एक डिफ़ॉल्ट नाम स्थान किसी ऐसे स्थान पर सेट के साथ: संदेश में (या कम से कम क्या JAXB की उम्मीद है) मूल रूप से, किसी ऐसे स्थान पर, आप की तरह एक तत्व है। हालांकि, जेएक्सबी तत्व को अयोग्य होने की उम्मीद कर रहा है। की तरह कुछ:

<searchCriteria> ..... </searchCriteria> 

निश्चित रूप से वे क्या भेज रहे हैं देखने के साथ-साथ स्कीमा जाँच को देखने के लिए क्या स्कीमा कहते हैं कि यह की तरह दिखना चाहिए के लिए भेजने से पक्ष की जाँच करें। (elementFormDefault = निर्दिष्ट नहीं होने पर अयोग्यता डिफ़ॉल्ट है)

+0

धन्यवाद, मैंने अपना मूल प्रश्न संपादित किया है और अपना डब्लूएसडीएल जोड़ा है। क्या आप कृपया बता सकते हैं कि wsdl के साथ क्या गलत है। बीटीडब्ल्यू, मेरे पास एक्सएसडी नहीं है। – Zahanghir

+0

तत्व बदलें FormDefault = "योग्य" से "योग्य" और सभी जैक्सबी ऑब्जेक्ट्स को पुन: उत्पन्न करें और यह आपके साबुन संदेश को स्वीकार करेगा। –

+0

ठीक है - मैं एक package-info.java फ़ाइल बनाया है और इसके साथ एनोटेट निम्नलिखित: @ javax.xml.bind.annotation.XmlSchema ( attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED, elementFormDefault = javax .xml.bind.annotation.XmlNsForm.QUALIFIED) बीटीडब्ल्यू, मैं जावा-पहला दृष्टिकोण का उपयोग कर रहा हूं। – Zahanghir

9

मुझे पता है कि यह प्रश्न एक स्वीकार्य उत्तर के साथ एक वर्ष पुराना है लेकिन मुझे आज भी वही त्रुटि थी।

मूल प्रश्न पोस्टर की तरह, मेरे पास एक जावा-फर्स्ट सेवा है जो एक ऑब्जेक्ट देता है। मेरे लिए समस्या यह थी कि मैंने बीन में एक अतिरिक्त संपत्ति जो सेवा विधि द्वारा वापस आती है।

एक बार जब मैंने सेवा को पुन: प्रकाशित/पुन: नियोजित किया, तो रिटर्न ऑब्जेक्ट के लिए क्लाइंट साइड जैक्सबी जेनरेट क्लास अब सर्वर साइड डब्लूएसडीएल कॉम्प्लेक्स-टाइप (यानी क्लाइंट साइड क्लासेस में नई संपत्ति की कमी थी) के समान नहीं था और इसलिए मेरे पास लापता संपत्ति के नाम से "अप्रत्याशित तत्व" अपवाद।

एक बार जब मैंने WsdlToJava का उपयोग कर सभी जैक्सब ऑब्जेक्ट्स को फिर से शुरू किया तो क्लाइंट साइड कोड सामान्य के रूप में काम करता था।

मैं भी इस स्थिति के लिए एक सुझाए गए कामकाज में आया जहां आप सर्वर क्लाइंट पर संपत्ति बदलते समय हर बार अपने क्लाइंट कोड को पुन: उत्पन्न नहीं करना चाहते हैं। समाधान मूल रूप से क्लाइंट पक्ष पर अप्रत्याशित तत्व अपवाद को अनदेखा करना है क्योंकि यह नए तत्वों के लिए है कि आपका मौजूदा कोड उपयोग नहीं करता है। समाधान करने के लिए यहाँ लिंक करें:
http://whileonefork.blogspot.com/2010/11/cxf-backwards-compatibility-adding.html

+0

बहुत बहुत धन्यवाद! इससे काफी मदद मिली। – javamonkey79

0

मैं एक ऐसी ही समस्या थी, लेकिन कारण XSD स्कीमा में तत्व नाम पर खाली स्थान के थे। elemname__। मैंने इसे elemname पर सही किया और अब यह काम करता है। त्रुटि फेंक दी गई क्योंकि xml elemnameelemname__ नहीं था।

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