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

标签 java web-services polymorphism jax-rpc

我有一个 JAX-RPC (Java) 网络服务需要返回一个复杂的多态值。更具体地说,类结构是这样的:

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 作为字符串返回之外,是否有更好的方法来完成这项工作?

在任何人问之前,由于我无法控制的情况,我无法使用 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
}

我知道,这需要客户端检查填充了哪个子成员,而且非常丑陋。

关于java - JAX-RPC Web 服务中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247442/

相关文章:

ruby-on-rails - 用于多态的 _type 列是什么?

java - 一条线上的多个分配未按预期工作

java - Android SQLite - 新表 VS。新数据库

php - 错误输出 SQL 脚本, 'date' 的默认值无效

json - 向 Web 服务发出获取请求,获取 json 响应并在 Qt 中更新 GUI

java - Java 中的多态函数调用?

ruby-on-rails - Rails 3 中的多态关联

java - Java中的奇怪错误

java - 如何打印另一个对象数组中一个对象的 int 值?

web-services - REST 服务 - 用于唯一检查的 URI 形成