Primavera RestTemplate - senza HttpMessageConverter adatto trovato per il tipo di risposta [..] e tipo di contenuto [application / xml]

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

Domanda

Ho un problema l'accesso a un servizio REST con l'RestTemplate. Ho già riuscito a all'utente la MarshallingConverter per accedere con un solo altro servizio, e tutto ha funzionato bene. Ho copiato questa funzionalità e classi del modello generate dallo schema XSD che ho ricevuto. Tuttavia ottengo un'eccezione che è stato trovato alcun convertitore adatto. Qui è la mia configurazione (sto usando Primavera 3.0.6 in relazione Vaadin se quello che conta):

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

Il RestTemplate è autowired nella mia implementazione del servizio di classe cliente. Che cosa mi manca qui? Ho controllato la risposta e il tipo di contenuto è impostato su application / xml e le classi modello fosse generata automaticamente, quindi la configurazione dovrebbe essere giusto. Grazie per qualsiasi aiuto.

È stato utile?

Soluzione

Quindi ho fatto questo lavoro. La parte del problema è, che le classi generate mancavano XmlRootElement annotazione. Più su di esso qui . Così ho aggiunto l'annotazione XJC allo schema XSD e ha generato le classi di nuovo con:

xjc -extension /path/to/schema

Dopo che tutto ha funzionato (o almeno non ho avuto alcuna eccezione l'elaborazione XML), ma gli elementi da dentro l'elemento principale non erano unmarshallised e ho ottenuto solo l'implpementation XmlElement dal parser. Il problema era (questo era specifica per il mio progetto), che la definizione elemento xs utilizzato: anyType come il tipo di elemento, che non può essere analizzato. Dopo ho cambiato al tipo di elemento giusto, tutto ha funzionato come fascino.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top