Spring RestTemplate - pas HttpMessageConverter approprié trouvé pour le type de réponse [..] et le type de contenu [application / xml]

StackOverflow https://stackoverflow.com/questions/8802499

Question

J'ai un problème d'accéder à un service REST avec le RestTemplate. Je l'ai déjà réussi à l'utilisateur le MarshallingConverter pour accéder à une autre service, et tout a bien fonctionné. Je l'ai copié cette fonctionnalité et les classes générées partir du schéma XSD je l'ai reçu. Cependant, je reçois une exception qu'aucun convertisseur approprié n'a été trouvé. Voici ma configuration (j'utilise Spring 3.0.6 en relation avec Vaadin si cette matière):

<bean id="marshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller" />
    <property name="unmarshaller" ref="jaxbMarshaller" />
</bean>

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            ... here are my model classes ...
        </list>
    </property>
</bean>

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <ref bean="marshallingConverter" />
        </list>
    </property>
</bean>

Le RestTemplate est autowired dans ma mise en œuvre un service de classe client. Qu'est-ce que j'oublie ici? J'ai vérifié la réponse et le type de contenu est défini sur application / xml et les classes de modèle ont été généré automatiquement, de sorte que la configuration doit être droite. Merci pour toute aide.

Était-ce utile?

La solution

Je l'ai fait ce travail. La partie du problème est que les classes générées ont été portées disparues annotation XmlRootElement. Pour en savoir plus . J'ai donc ajouté l'annotation XJC au schéma XSD et Generated à nouveau les classes avec:

xjc -extension /path/to/schema

Après que tout a travaillé (ou au moins je n'ai pas exception le traitement du XML), mais les éléments de l'intérieur de l'élément racine ne sont pas unmarshallised et je suis arrivé que la implpementation XMLELEMENT de l'analyseur. Le problème était (ce qui était spécifique pour mon projet), que la définition de l'élément utilisé xs: anyType comme le type d'élément, qui ne peut pas être analysé. Après que je l'ai changé pour le type d'élément droit, tout a fonctionné comme un charme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top