Spring RestTemplate - Kein geeignetes httpMessageConverter für Antworttyp [..] und Inhaltstyp [Anwendung/XML] gefunden

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

Frage

Ich habe ein Problem, mit dem RestTemplate auf einen REST -Service zugreifen zu können. Ich habe es bereits geschafft, den MarshallingConverter auf einen anderen Dienst zuzugreifen, und alles hat gut funktioniert. Ich habe diese Funktionalität kopiert und Modellklassen aus dem XSD -Schema generiert, das ich erhalten habe. Ich bekomme jedoch eine Ausnahme, dass kein geeigneter Konverter gefunden wurde. Hier ist meine Konfiguration (ich verwende Spring 3.0.6 in Verbindung mit Vaadin, wenn dies wichtig ist):

<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>

Die RestTemplate ist in meiner Implementierung von Service Client -Class -Klasse automatisch. Was vermisse ich hier? Ich habe die Antwort überprüft und der Inhaltstyp ist auf Anwendung/XML eingestellt und die Modellklassen wurden autogeneriert, sodass die Konfiguration richtig sein sollte. Danke für jede Hilfe.

War es hilfreich?

Lösung

Also habe ich diese Arbeit gemacht. Der Teil des Problems war, dass die generierten Klassen XMlrootelement -Annotation fehlten. Mehr darüber hier. Deshalb habe ich die XJC -Annotation zum XSD -Schema hinzugefügt und die Klassen erneut generiert mit:

xjc -extension /path/to/schema

Danach hat alles funktioniert (oder zumindest habe ich keine Ausnahme erhalten, die die XML verarbeitet), aber die Elemente aus dem Wurzelelement waren nicht unmisshallisiert und ich bekam nur die XMLelement -Implpementierung vom Parser. Das Problem war (dies war spezifisch für mein Projekt), dass die Elementdefinition XS: Anytype als Elementtyp verwendete, die nicht analysiert werden kann. Nachdem ich es auf den richtigen Elementtyp geändert habe, funktionierte alles wie Charme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top