Tôi có điều này đơn giản JAX-WS WebService:Sử dụng đa hình JAX-WS webservice thông số
@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 {}
tôi tạo ra một khách hàng và gọi feed
với một thể hiện của Dog
.
Animal myDog = new Dog();
myDog .setName("Rambo");
myDog .setWeight(15);
feedingServicePort.feed(myDog);
Các động vật trong cơ thể của cuộc gọi SOAP trông như thế này:
<animal>
<name>Rambo</name>
<weight>15</weight>
</animal>
và tôi nhận được một UnmarshallException
vì Animal
là trừu tượng.
Có cách nào để có Rambo không được sửa đổi như một thể hiện của lớp Dog
? Lựa chọn thay thế của tôi là gì?
Sử dụng xsi: loại từ SoapUI đã hoạt động, sự cố phải nằm trong ứng dụng khách của tôi. Cảm ơn. – adrianboimvaser