1

我的(简化)情况:

服务@WebService
容器 getContainer() @WebMethod

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

ContainableObjects [摘要]
void setName(String name)
String getName()
void doSomething()

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

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

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

目前,Service.getContainer 会给我一个容器的表示。但是,CXF 不会发送比 ContainableObject 对象更多的信息。因此,客户端不会收到存储在子类中的值信息。

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

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

4

1 回答 1

1

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

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

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

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

于 2012-08-02T20:46:22.663 回答