我正在使用spring-mvc和Jaxb2Marshaller進行Web服務。使用Jaxb2Marshaller與具有相同@XmlRootElement名稱的多個類
我有兩個類,都具有相同@XmlRootElement
名
@XmlRootElement(name="request")
class Foo extends AstractRequest {
}
@XmlRootElement(name="request")
class Bar extends AbstractRequest {
}
所有三類(AbstractRequest,富,酒吧)都包含在同一順序
現在請求classesToBeBound列表註釋使用Bar的工作正常。但隨着消息Bar cannot be cast to Foo
控制器代碼是這樣解組期間使用美孚的一個拋出一個ClassCastException例外,
Source source = new StreamSource(new StringReader(body));
Foo request = (Foo) this.jaxb2Marshaller.unmarshal(source);
我想
發生這種情況,因爲酒吧是那種因爲它是後寫覆蓋的Foo在Spring-servlet.xml文件中要綁定的類列表中的Foo
但是,我也有多個類用@XmlRootElement(name="response")
註解,並且編組響應不會給出任何問題。
有沒有辦法指定jaxb2Marshaller用於解組的類?
不,沒有辦法做到這一點。你需要重構你的設計,以保持彼此不同。 – skaffman 2011-03-03 13:15:30