Spring RestTemplate - не найден подходящий HttpMessageConverter для типа ответа [..] и типа содержимого [application / xml] - PullRequest
1 голос
/ 10 января 2012

У меня проблема с доступом к службе REST с помощью RestTemplate. Мне уже удалось использовать MarshallingConverter для доступа к другому сервису, и все работало нормально. Я скопировал эту функциональность и сгенерировал классы Model из полученной схемы XSD. Однако я получаю исключение, что подходящий конвертер не найден. Вот моя конфигурация (я использую Spring 3.0.6 в связи с Vaadin, если это имеет значение):

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

RestTemplate автоматически подключается в моей реализации класса клиента службы. Что мне здесь не хватает? Я проверил ответ, и тип содержимого установлен на application / xml, и классы модели были сгенерированы автоматически, поэтому конфигурация должна быть правильной. Спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 января 2012

Итак, я сделал эту работу. Часть проблемы заключалась в том, что в сгенерированных классах отсутствовала аннотация XmlRootElement. Подробнее об этом здесь . Поэтому я добавил аннотацию XJC в схему XSD и снова сгенерировал классы с помощью:

xjc -extension /path/to/schema

После этого все сработало (или, по крайней мере, я не получил никаких исключений при обработке XML), но элементы внутри корневого элемента не были беспрепятственными, и я получил только имплементацию XMLElement от анализатора. Проблема была (это было специфично для моего проекта), что определение элемента использовало xs: anyType в качестве типа элемента, который не может быть проанализирован. После того, как я изменил его на правильный тип элемента, все заработало как шарм.

...