JAX-WS:如何在继承的响应对象(WS 响应)中排除 "member/field"?

标签 jax-ws

我有一个 WebService,它作为 Web 服务调用的结果返回一个名为“CustomerResponse”的 ResponseObject。当我“从头开始”实现这个对象时,一切正常:在这种情况下,我的实现只包含所有需要的“简单类型”,如字符串、整数,但没有对象引用/关联。

但是我想做的是“重用”现有的对象。我的域模型中有一个“Customer”对象,该对象用于应用程序本身。而不是愚蠢地或多或少地克隆 Customer进入“CustomerReponse”对象(通过再次手动输入所有成员/字段),我想以 CutomerResponse 为基础Customer 上的对象扩展对象:

class CustomerResponse extends Customer

==> 问题是现在 CustomerResponse包含一些继承自 Customer 的“内部”字段。我不想通过 Web 服务公开的对象(如 DatabaseID、Security-Stuff)。此外(这也是目前的主要问题”)Customer 还包含许多“对象引用/关联”到其他对象,例如 AddressOrdersHistory,我也不想通过 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/

相关文章:

java - 服务器到客户端通知/Web 服务(jax-ws) 到客户端通信

java - 内联 WSDL 而不是 wsdl :import

java - 将类编码到 XSD :Anytype xml

java - 如何在 glassfish 中从一个容器调用另一个容器中的 Web 服务

java - 从 Web 服务中的 sun-web.xml 获取上下文根

java - 调整序列化 DOM 中的 XML 命名空间声明样式

java - jax ws 获取客户端ip

java - 使用 System.setProperty 在 NetBeans 平台应用程序中创建嵌入式 Jetty 端点时出现问题

java - 带有 Java 实现的 SOAP WS (JAX-WS) : I receive null parameters because of the namespace qualified

java - jax-ws 服务返回数组列表