我有一个JAX-RPC(Java)Web服务,需要返回复杂的多态值.更具体地说,类结构是这样的:
abstract class Child {
}
class Question extends Child {
private String name;
// other fields, getters, and setters
}
class Section extends Child {
private String label;
private Child[] children;
// getters and setters
}
class Quiz {
private Child[] elements;
// getter and setter
}
我的Web服务有一个返回测验的方法,当然可能包含问题和章节,其中可能包含问题和其他章节,依此类推.但是,当我生成WSDL时,只有Child和Quiz才会进入.当我调用Web服务时,我会返回一个具有正确数量的子项的Quiz元素,但它们都是Child元素,并且它们都是空的.
有没有一种很好的方法来完成这项工作,而不仅仅是将XML作为String返回?
在有人要求之前,由于我无法控制的情况,我无法使用JAX-WS.
解决方法:
我不认为JAX-RPC以这种方式支持多态.我遇到了类似的问题,并且必须通过创建一个只有两个成员的类来解决它 – 一个可能返回的两个类中的一个 – 并且只根据我想要返回的类型填充一个.所以在你的情况下:
class Child
{
private Section section;
private Question question;
// Constructor, etc...
}
class Question
{
private String name;
// other fields, getters, and setters
}
class Section
{
private String label;
private Child[] children;
// getters and setters
}
class Quiz
{
private Child[] elements;
// getter and setter
}
我知道,这要求客户检查孩子的哪个成员居住,并且非常丑陋.