我有一个 WebService,它作为 Web 服务调用的结果返回一个名为“CustomerResponse
”的 ResponseObject。当我“从头开始”实现这个对象时,一切正常:在这种情况下,我的实现只包含所有需要的“简单类型”,如字符串、整数,但没有对象引用/关联。
但是我想做的是“重用”现有的对象。我的域模型中有一个“Customer
”对象,该对象用于应用程序本身。而不是愚蠢地或多或少地克隆 Customer
进入“CustomerReponse”对象(通过再次手动输入所有成员/字段),我想以 CutomerResponse
为基础Customer
上的对象扩展对象:
class CustomerResponse extends Customer
==> 问题是现在
CustomerResponse
包含一些继承自 Customer
的“内部”字段。我不想通过 Web 服务公开的对象(如 DatabaseID、Security-Stuff)。此外(这也是目前的主要问题”)Customer
还包含许多“对象引用/关联”到其他对象,例如 Address
、Orders
、History
,我也不想通过 Web 服务公开.(似乎 Apache CXF “评估”整个 Objectgraph 并尝试将它们包含在 ResponseObject 中......)==> 是否可以基于现有对象“扩展”WebService 响应对象以及以某种方式 排除 扩展父类(super class)型的一些“成员/字段”? (所以我想排除一些成员(如DatabseID)和所有“对象关联”,如(地址/订单/历史)..
我怎样才能完成这个,有什么注释和程序?
非常感谢你!!
简
最佳答案
关于@XmlTransient注解,我发现你需要把它放在你想隐藏的字段的getter方法上。
public class InputBean
{
private String fieldShow;
private transient String fieldHide;
public String getFieldShow() {
return fieldShow;
}
public void setFieldShow(String fieldShow) {
this.fieldShow = fieldShow;
}
@XmlTransient
public String getFieldHide() {
return fieldHide;
}
public void setFieldHide(String fieldHide) {
this.fieldHide = fieldHide;
}
}
在示例中,“fieldHide”在服务 xsd 上不可见。
关于JAX-WS:如何在继承的响应对象(WS 响应)中排除 "member/field"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1734270/