JAXB unmarshalling exception: inattendu élément quand le printemps webservice 1.0.4
J'ai écrit printemps webservice cleint exemple Cela fonctionne bien avec springws1.5 mais lors de l'exécution avec spring ws 1.0.4, je suis en dessous d'exception. S'il vous plaît aidez-moi pourquoi nous allons obtenir cette exception et comment les résoudre. J'ai besoin d'utiliser la version seulement comme mon de printemps version 2.0.4. S'il vous plaît répondre dès que 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)
J'ai codé à l'aide de l'exemple suivant
http://justcompiled.blogspot.com/2010/11/web-service-client-with-spring-ws.html
La suite des changements que j'ai fait:
Genereate classes à l'aide d' wsconsume
fichier de commandes à partir de jboss bin,
J'ai gardé les pots
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
dans jboss/../lib
Est mon de printemps de fichier de configuration:
<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>
Maintenant, j'ai remplacé tout lieu et webservice 1.5.0 jar
. Stil, je suis confronté à ce problème, Auparavant, il a travaillé. Je n'ai pas fait beaucoup chanegs. est quelque chose de dérangé dans mon code? Comment chesk ..Comment suivre cette. Toute aide est très appréciée.
Mon ObjectFactory est 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();
}
}
D'entrée
Suivantes sont classlevel annotations
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"xxxData"
})
@XmlRootElement(name = "Xxx")
Réponse:
@ XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"xxxResult"
})
@XmlRootElement(name = "XxxResponse")
Merci de me suggérer comment conserver les journaux et la façon de résoudre ces erreurs?
Personne ne répond?? Besoin de plus d'information ou cette question n'est pas claire. S'il vous plaît aider moi je suis vraiment à la recherche de ce.
Montrez-nous votre Printemps config
Je n'ai pas jaxb.les propriétés. Je n'ai pas gardé package-info.java dans ma structure. Est-il nécessaire? J'ai posté ObjectFactory.java. Il y xxx est masqué pour AddrCheck. Merci pour ur le temps
OriginalL'auteur vishnu | 2011-01-04
Vous devez vous connecter pour publier un commentaire.
L'exception que vous êtes l'obtention est de vous dire que le JAXB contexte s'attend à recevoir des éléments avec un pas d'espace de noms XML. Il s'attend à ce parce que votre JAXB annotée, les classes n'ont pas d'espace de noms défini nulle part. Vous vous attendez à trouver cette déclarée comme
@XmlNamespace
, quelque part dans la limite des classes (ou danspackage-info.java
), mais vous n'avez pas n'importe où.Spring-WS, cependant, est la réception des réponses que ne un espace de noms (le
http://yyy.org
dans votre exemple), et donc la unmarshalling échoue.Ce que je ne peux pas expliquer, c'est comment ce jamais travaillé avec Spring-WS 1.5.x - l'espace de noms d'incompatibilité d'échec pour chaque version.
Quel que soit l'outil utilisé pour générer le JAXB classes devrait ont produit un
package-info.java
fichier déclaré à l'espace de noms. Êtes-vous sûr que ce n'est pas là quelque part?J'ai exactement le même problème, mais je n'ai jamais supprimé le package-info.java fichier et double-vérifier si c'est vraiment trop. Pourriez-vous me donner quelques conseils s'il vous plaît?
OriginalL'auteur skaffman