Spring Restemplate-応答タイプ[..]およびコンテンツタイプ[Application/XML]には適切なhttpmessageconverterが見つかりません

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

質問

RESTテンプレートでレストサービスにアクセスするのに問題があります。私はすでにMarshallingConverterを使用して他の1つのサービスにアクセスすることができましたが、すべてが正常に機能しました。この機能をコピーし、受け取ったXSDスキーマからモデルクラスを生成しました。ただし、適切なコンバーターが見つからなかったという例外があります。これが私の構成です(それが重要な場合、Vaadinに関連してSpring 3.0.6を使用しています):

<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は、私のサービスクライアントクラスの実装で自動化されています。ここに何が欠けていますか?応答を確認しましたが、コンテンツタイプはアプリケーション/XMLに設定されており、モデルクラスが自動供給されているため、構成は正しいはずです。助けてくれてありがとう。

役に立ちましたか?

解決

だから私はこの仕事をしました。問題の一部は、生成されたクラスにxmlrootelementアノテーションが欠落していることでした。それについてもっと ここ. 。そこで、XSDスキーマにXJCアノテーションを追加し、次のクラスを再び生成しました。

xjc -extension /path/to/schema

その後、すべてが機能しました(または、少なくともXMLの処理を例外に取得しませんでした)が、ルート要素の内側からの要素は非攻撃されておらず、パーサーからXMLelement Impmentationのみを取得しました。問題は(これは私のプロジェクトに固有でした)、要素定義はxs:anyTypeを要素タイプとして使用し、解析できないことでした。適切な要素タイプに変更した後、すべてが魅力のように機能しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top