ho questo semplice JAX-WS WebService:Utilizzando polimorfico webservice JAX-WS parametri
@WebService
public class AnimalFeedingService {
@WebMethod
public void feed(@WebParam(name = "animal") Animal animal) {
// Whatever
}
}
@XmlSeeAlso({ Dog.class, Cat.class })
public abstract class Animal {
private double weight;
private String name;
// Also getters and setters
}
public class Dog extends Animal {}
public class Cat extends Animal {}
ho creare un client e chiamare feed
con un'istanza di Dog
.
Animal myDog = new Dog();
myDog .setName("Rambo");
myDog .setWeight(15);
feedingServicePort.feed(myDog);
L'animale nel corpo della chiamata SOAP assomiglia a questo:
<animal>
<name>Rambo</name>
<weight>15</weight>
</animal>
e ottengo una UnmarshallException
perché Animal
è astratta.
C'è un modo per avere Rambo unmarshalled come istanza di classe Dog
? Quali sono le mie alternative?
Utilizzando xsi: digitare da SoapUI ha funzionato, il problema deve essere nel mio client. Grazie. – adrianboimvaser