Ich habe ein Paket mit JAXB annotierten Klassen mit einer abstrakten Oberklasse. Ich möchte diese Oberklasse in Web-Service-Schnittstelle verwenden, so kann ich jede der Unterklassen als Parameter übergeben. Wenn ich es tun, wird eine Ausnahme ausgelöst:Java Web Services/JAXB - Abstrakte Oberklasse
javax.xml.ws.WebServiceException: javax.xml.bind.UnmarshalException
- with linked exception:
[javax.xml.bind.UnmarshalException: Unable to create an instance of xxx.yyy.ZZZ
- with linked exception:
[java.lang.InstantiationException]]
Es ist möglich, manuell marshall/unmarshall & Pass Parameter als String, aber ich würde es gerne vermeiden. Irgendwelche Ideen, wie es geht?
weiß nicht viel über JAXB, aber es muss einen Grund geben, warum keine Instanz erstellt werden kann. Hat xxx.yyy.ZZZ einen öffentlichen Konstruktor ohne Argumente? –
'xxx.yyy.ZZZ' ist der Name einer abstrakten Oberklasse des tatsächlichen Objekts, das gemarshallt wurde. Die schlechte Sache ist, dass jaxb beim Unmarshalling versucht, diese Oberklasse anstelle der eigentlichen Klasse des übergebenen Objekts zu instanziieren. –
Ist xxx.yyy.ZZZ im System/Klassenpfad, der versucht, den Aufruf zu entpacken? – fish