Mit Jaxb2Marshaller mit mehreren Klassen mit gleichem @XmlRootElement Namen

Arbeite ich an einem web service mit spring-mvc und Jaxb2Marshaller.

Ich habe zwei Klassen, beide versehen mit der gleichen @XmlRootElement Namen

@XmlRootElement(name="request")
class Foo extends AstractRequest {

}

@XmlRootElement(name="request")
class Bar extends AbstractRequest {

}

Alle drei Klassen (AbstractRequest, Foo, Bar) sind im classesToBeBound Liste in der gleichen Reihenfolge

Nun die Anfrage, die verwendet Bar funktioniert gut. Aber die, die verwendet Foo wirft eine Ausnahme classcastexception-Fehler beim unmarshalling mit Nachricht Bar cannot be cast to Foo

Den controller-code ist,

Source source = new StreamSource(new StringReader(body));
Foo request = (Foo) this.jaxb2Marshaller.unmarshal(source); 

denke ich dies ist passiert, weil Bar Art des überwiegenden Foo, da es geschrieben, nachdem Foo in der Liste der Klassen gebunden zu sein, in der spring-servlet.xml Datei

Aber ich bin auch mit mehreren Klassen versehen mit @XmlRootElement(name="response") und marshalling der Antwort nicht geben, keine problem.

Gibt es eine Möglichkeit, an die Klasse verwendet werden, durch die jaxb2Marshaller für unmarshalling ?

  • Nein, es gibt keine Möglichkeit, das zu tun. Sie müssen umgestalten, Ihr design, um Sie voneinander unterscheiden.
InformationsquelleAutor naiquevin | 2011-03-03
Schreibe einen Kommentar