cxf暴露抽象类的子类

时间:2012-07-31 13:08:12

标签: java cxf subclass

我的(简化)情况:

服务 @WebService
    Container getContainer()@ WebMethod

容器
    void setObjects(ContainableObjects [] objects)
    ContainableObjects [] getObjects()

ContainableObjects [abstract]
    void setName(String name)
    String getName()
    void doSomething()

ContainedString [extends ContainableObjects]
    void setValue(String value)
    String getValue()
    void doSomethingElse()

ContainedInt [extends ContainableObject]
    void setValue(int value)
    int getValue()
    void doAnotherThing()

这些POJO对象已经存在。我正在使用Eclipse工具生成CXF代码。

目前,Service.getContainer将为我提供容器的表示。但是,CXF不会发送任何比ContainableObject对象中包含的信息更多的信息。因此,客户端不接收存储在子类中的值信息。

这种简化并没有完全显示使用子类的原因,但我向你保证这个原因存在。

显然,我需要告诉CXF有实现的子类。但是我该怎么做?

1 个答案:

答案 0 :(得分:1)

经过一番研究,我找到了解决方案。

CXF文档可能非常简洁,但它所依赖的标准和框架的文档却不是。

对于这个问题,JAXB上的文档对我帮助很大。

实际解决方案: ContainableObject类需要注释: @XmlSeeAlso({ContainedString,ContainedInt})。