Java 在客户端,我应该如何使用CXF Web服务返回的复杂类型对象?

Java 在客户端,我应该如何使用CXF Web服务返回的复杂类型对象?,java,cxf,webservice-client,Java,Cxf,Webservice Client,我刚刚开始使用CXF2.4公开现有web应用程序中的一些方法。其中一个方法返回一个复杂类型的对象Employee,该对象的属性为Address对象 employee对象看起来像: public class Employee implements Serializable { private String gid; private String name; private Address employeeAddress; //...getters and sette

我刚刚开始使用CXF2.4公开现有web应用程序中的一些方法。其中一个方法返回一个复杂类型的对象Employee,该对象的属性为Address对象

employee对象看起来像:

public class Employee implements Serializable {
    private String gid;
    private String name;
    private Address employeeAddress;
    //...getters and setters omitted
}
Employee getEmployee(@WebParam(name="gid") String gid);
服务端接口中的方法签名如下所示:

public class Employee implements Serializable {
    private String gid;
    private String name;
    private Address employeeAddress;
    //...getters and setters omitted
}
Employee getEmployee(@WebParam(name="gid") String gid);
在客户端,我使用CXF WsdlToJava实用工具从服务器wsdl地址生成客户端存根,并愉快地在客户端web应用程序中使用Employee对象

今天,一位同事向我指出,我不应该在客户端应用程序代码中使用webservice生成的对象。相反,我应该创建一个特定于我的客户端web应用程序的Employee类,并将属性从web服务Employee对象复制到我的应用程序Employee对象,以防止web服务代码在整个代码库中结束

对我来说,这似乎有些过分,实际上我将创建一个Employee类和一个Address类,并在这些类型的对象和WebService的对象之间来回复制属性

在我的应用程序中,我在JSP页面上显示Employee对象的详细信息,但没有对它做太多其他事情

因此,总结一下我的问题——当在CXF中使用返回复杂类型对象的webservice调用时,是否应该始终使用单独的客户端应用程序特定对象来复制webservice生成的对象的属性?是否有规则可供使用,还是取决于返回的对象有多复杂以及客户端应用程序打算如何处理它们(例如,仅显示它们、编辑它们并返回它们、将它们存储在客户端应用程序数据库中)

谢谢
Darren

我认为在客户端使用webservice生成的对象没有任何问题。 创建自己的类并来回移动属性只是一个消磨时间的过程

当工具为您提供实现功能时,为什么我们需要手动进行更改。如果存在有效点,则需要弄清楚


因此,我的回答是,您可以使用webservice生成的Employee类进行实现。

感谢您的回答Abhisek。我认为在我的情况下,这样做是明智的。也许在更大或更复杂的项目中,为web服务对象建立一个抽象层是有意义的。我在客户端查看生成的类,它们是从WSDL生成的,而不是与服务器端bean有任何关系,因此它们是Web服务的公开属性。到目前为止,这是一次有趣的经历,我期待着了解更多。