java – JAX-RPC Web服务中的多态性

我有一个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
}

我知道,这要求客户检查孩子的哪个成员居住,并且非常丑陋.

点赞