5

I have written spring webservice cleint example This is working fine with springws1.5 but when running with spring ws 1.0.4 i am getting below exception. Please help me why we will get this exception and how to resolve. I need to use down version only as my spring version is 2.0.4. Please reply as soon as possible.

Unhandled exception: org.springframework.oxm.jaxb.JaxbUnmarshallingFailureException: JAXB unmarshalling exception: unexpected element (uri:"http://yyy.org", local:"xxxResponse"). Expected elements are <{}xxx>,<{}xxxResponse>; nested exception is javax.xml.bind.UnmarshalException: unexpected element (uri:"yyy.org", local:"xxxResponse"). Expected elements are <{}xxx>,<{}xxxResponse> Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://yyy.org", local:"xxxResponse"). Expected elements are <{}xxx>,<{}xxxResponse> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:603) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:244) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:239) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1009) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:446) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:427) at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:71) at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:137) at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:240) at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:123) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:314) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:297) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:107) at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:395) at org.springframework.ws.support.MarshallingUtils.unmarshal(MarshallingUtils.java:62) at org.springframework.ws.client.core.WebServiceTemplate$2.extractData(WebServiceTemplate.java:276) at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:417) at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:265) at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:253) at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:245) at encompass.mtm.webservices.Code1ServiceClient.getAddressCheckResponse(Code1ServiceClient.java:24) 

I have coded using following example http://justcompiled.blogspot.com/2010/11/web-service-client-with-spring-ws.html The following changes i have done: Genereate classes using wsconsume batch file from jboss bin, I have kept jars

saaj1.3.jar, spring-ws-core-1.0.4.jar,spring-xml-1.0.4.jar spring-oxm-tiger-1.0.4.jar,spring-oxm-1.0.4.jar 

in jboss/../lib

Following is in my spring configuration file:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"> <property name="messageFactory"> <bean class="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> </property> </bean> <bean id="test1ObjectFactory" class="test.webservices.ObjectFactory"/> <bean id="test1ServiceMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="contextPath" value="test.webservices" /> </bean> <bean id="test1ServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate"> <constructor-arg ref="messageFactory" /> <property name="marshaller" ref="test1ServiceMarshaller"></property> <property name="unmarshaller" ref="test1ServiceMarshaller"></property> <property name="messageSender"> <bean class="org.springframework.ws.transport.http.CommonsHttpMessageSender"> </bean> </property> <property name="defaultUri" value="${webservice.url}" /> </bean> <bean id="test1ServiceClient" class="test.webservices.test1ServiceClient"> <constructor-arg ref="test1ServiceTemplate"></constructor-arg> <property name="test1ObjectFactory" ref="test1ObjectFactory"></property> </bean> 

Now i have replaced everything and place webservice 1.5.0 jar. Stil i am facing this problem, Previously it worked. I haven't done much chanegs. is any thing disturbed in my code? How to chesk ..How to track this. Any help is highly appreciated. My ObjectFactory is simple:

@XmlRegistry public class ObjectFactory { /** * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: test.webservices * */ public ObjectFactory() { } /** * Create an instance of {@link xxxResponse } * */ public XxxResponse createxxxResponse() { return new xxxResponse(); } /** * Create an instance of {@link xxx } * */ public Xxx createXXX() { return new XXX(); } 

}

Input Following are classlevel annotations

@XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "xxxData" }) @XmlRootElement(name = "Xxx") 

Response:

 @ XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "xxxResult" }) @XmlRootElement(name = "XxxResponse") 
12
  • Please give me reply when we get this error. Where to look at? Commented Jan 4, 2011 at 22:32
  • Please suggest me how to keep logs and how to resolve these errors? Commented Jan 4, 2011 at 23:09
  • No one is answering?? Need some more information or this question is not clear. Please help me i am really looking for this. Commented Jan 5, 2011 at 0:37
  • I have added configuration file in my question, Please help me out.I am working on couple of days and getting all type of errors please do me favour. Commented Jan 5, 2011 at 17:57
  • 1
    I dont have jaxb.properties. I didn't keep package-info.java in my structure. Is it required? I have posted ObjectFactory.java. There xxx is masked for AddrCheck. Thank you for ur time Commented Jan 5, 2011 at 23:13

1 Answer 1

11

The exception you're getting is telling you that the JAXB context is expecting to receive elements with no XML namespace. It's expecting this because your JAXB-annotated classes do not have a namespace defined anywhere. You'd expect to find this declared as @XmlNamespace, somewhere in the bound classes (or in package-info.java), but you don't have that anywhere.

Spring-WS, however, is receiving responses that do have a namespace (the http://yyy.org in your example), and so the unmarshalling fails.

What I can't explain is how this ever worked with Spring-WS 1.5.x - the namespace mismatch should fail for every version.

Whatever tool you used to generate the JAXB classes should have produced a package-info.java file that declared the namespace. Are you sure it's not in there somewhere?

Sign up to request clarification or add additional context in comments.

3 Comments

Thank you sir. This is really my bad. I didnt know that this package-info.java is that important. I didn't keep this file thinking that it contain only package name.Now i kept and every thing worked correctly. By searching google, i tried to keep namespace for AddrCheck and AddrCheckResponse files in XmlRootElement. But that time i got null result. Any way thank you so much sir. Thatswhy i kept one more question to understand how these marshaller works, Any way thank you very much sir again.
I have the exact same problem, but i never deleted the package-info.java file and double checked if it is really there too. Could you give me some hints please?
I have kept package-info.java in place but still I get unexpected element error. Any idea what else I am missing?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.