Spring Restemplate-応答タイプ[..]およびコンテンツタイプ[Application/XML]には適切なhttpmessageconverterが見つかりません
-
25-10-2019 - |
質問
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を要素タイプとして使用し、解析できないことでした。適切な要素タイプに変更した後、すべてが魅力のように機能しました。
所属していません StackOverflow