Web services 使用复杂对象作为参数和返回类型,使用JBossWS创建webservice和客户端

Web services 使用复杂对象作为参数和返回类型,使用JBossWS创建webservice和客户端,web-services,jboss,jboss5.x,webservice-client,jbossws,Web Services,Jboss,Jboss5.x,Webservice Client,Jbossws,我正在使用JBoss 5.1.0GA为其开发一个Web服务和客户端。JBossWs堆栈已经预装了我下载的二进制文件,据我所知是JBossWs 3.1.2GA 我已经使用此设置开发了一个web服务,并成功创建了一个客户端。这就是我所拥有的 作为war文件部署的pojo web服务 @WebService public class Service{ @WebMethod public CompleObj getConfiguration() { CompleObj o

我正在使用JBoss 5.1.0GA为其开发一个Web服务和客户端。JBossWs堆栈已经预装了我下载的二进制文件,据我所知是JBossWs 3.1.2GA

我已经使用此设置开发了一个web服务,并成功创建了一个客户端。这就是我所拥有的

作为war文件部署的pojo web服务

@WebService
public class Service{
    @WebMethod
    public CompleObj getConfiguration() {
        CompleObj oConf = new CompleObj ();
        for (int i = 0; i < 10; i++) {
            NestObj oInst = new BOpRepoInstance("Val1", "Val2", "Val3", "Val4");
            oConf.addRepoInstance(oInst);
        }
        return oConf;
    }
}
@WebService
公务舱服务{
@网络方法
公共CompleObj getConfiguration(){
CompleObj oConf=新的CompleObj();
对于(int i=0;i<10;i++){
NestObj oInst=新实例(“Val1”、“Val2”、“Val3”、“Val4”);
oConf.addRepoInstance(oInst);
}
返回oConf;
}
}
这里,

CompleObj=>是一个复杂对象,其列表类型为NestObj。它的 getter/setter、toString和其他一些方法

NextObj=>有4个字符串类型的变量。它的接受者/接受者, toString、hashCode、equals和其他一些方法

已成功部署此web服务

后来使用eclipse向导创建了一个客户端,用于使用WSDL文档生成Web服务客户端。它还创建了一个示例客户机文件,该文件将调用webservice并获取返回值。这也很有魅力

现在我的问题是,当eclipse为客户端生成存根时,它为CompleObj和NestObj创建了类。这些类只有变量及其getter/setter(这很有意义,因为它们是从WSDL文档生成的)。因此,我失去了很多其他方法,包括toString、hasCode、equals等,我也想在客户端使用这些方法

现在,我如何直接使用WebService项目中定义的实际类文件,并避免客户端使用生成的类文件。我可以为客户机项目提供类文件作为.jar二进制文件,我真的不知道如何实现这一点

另一个问题是,web服务位置直接嵌入到存根中,如何将web服务位置作为参数的一部分传递给调用代码

  • 在客户端生成的类正好位于 当您 然后调用用于将对象传送到服务器的服务 JBOOSWS将执行到实际类的JAXB映射。那么你呢 无法使您自己的类在客户端中使用 虽然他们看起来一样

  • URL将固定在存根代码中,因为在eclipse中生成WS-client时第一个URL是 您必须提供的是WSDL URL,然后eclipse将生成 因此,生成的代码是特定于WSDL的 你提供的。如果您想动态地传递WSDL,那么 需要有自己的代码来生成客户端存根 使用任何WSDLtoJAVA或任何其他实用程序的WSDL URL


  • 谢谢我理解你提到的上述几点。为了更准确地说明我在寻找什么,让我们以示例web服务及其客户机生成为例。现在,在这个示例中,如果我将自定义数据类型(即Customer.java和Discount*.java)打包到一个jar文件中,我如何强制wsconsume使用这些文件,而不是创建新的文件。目前我要做的是,在生成源代码之后,删除创建的数据类型,然后更新导入以指向Jar文件中可用的数据类型。这涉及到对提供的实用程序“wsconsume”的更改,为此我们需要查看wsconsume实现。