最近、Spring で使用している XStream の問題に直面しています。XMLのマーシャリングとアンマーシャリングにXStreamを使用しているRESTアプリケーションがあります。以下に示すように構成しました。
<bean id="xStreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="annotatedClasses">
<list><value>com.bestbuy.commerce.repobjects.OfflineOrderRepresentation</value></list>
</property>
<property name="autodetectAnnotations" value="true" />
</bean>
そして、この XStreamMarshaller は、示されているように HttpMessageconverter に構成されています。
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list>
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="xStreamMarshaller" />
<property name="unmarshaller" ref="xStreamMarshaller" />
</bean>
</util:list>
</property>
</bean>
ここでの問題は、適切な XML を投稿すると、対応する XStream 注釈付きクラス「OfflineOrderRepresentation」に一致するはずですが、それはランダムに発生し、構文的に正しくないメッセージが表示される場合があり、サーバーを再起動すると問題がランダムに修正されます。
以下は、私が取得しているエラーログです。
[org.springframework.http.converter.xml.MarshallingHttpMessageConverter@712625b0]
[org.springframework.web.bind.annotation.support.HandlerMethodInvoker]
Reading [com.bestbuy.commerce.repobjects.OfflineOrderRepresentation]
[org.springframework.http.converter.xml.MarshallingHttpMessageConverter@712625b0]
[org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver]
[com.bestbuy.commerce.controllers.OrderController@799a92d1]:
org.springframework.http.converter.HttpMessageNotReadableException: Could not read [class com.bestbuy.commerce.repobjects.OfflineOrderRepresentation];