Java Grails和消费SOAP Web服务

Java Grails和消费SOAP Web服务,java,web-services,grails,soap,soap-client,Java,Web Services,Grails,Soap,Soap Client,作为Grails的新手,我想知道人们在Grails项目中使用什么来使用Web服务。那么系统的客户端呢?有什么建议吗?我看到人们在使用GroovyWS、SpringWS等。。什么是好的且易于使用的 在这里使用Grails CXF插件。需要: 类加载器解决方案-DynamicClientFactoryit更改了当前的类加载器 以及手工编写WS调用代码 除此之外,消费者代码是相当苗条的 编辑:对不起,我不能确定我还没有打破和退出: #1: #2: 非常易于使用,并且有很好的文档,我绝对推荐。使用Gra

作为Grails的新手,我想知道人们在Grails项目中使用什么来使用Web服务。那么系统的客户端呢?有什么建议吗?我看到人们在使用GroovyWS、SpringWS等。。什么是好的且易于使用的

在这里使用Grails CXF插件。需要:

  • 类加载器解决方案-
    DynamicClientFactoryit
    更改了当前的类加载器
  • 以及手工编写WS调用代码
  • 除此之外,消费者代码是相当苗条的

    编辑:对不起,我不能确定我还没有打破和退出:

    #1:

    #2:


    非常易于使用,并且有很好的文档,我绝对推荐。

    使用Grails1.3.7,我正在使用自己的web服务。它实际上是基于GroovyWS的,GroovyWS反过来使用CXF。它非常容易使用,至少在我的简单场景中是如此,在这个场景中,我只从后端web服务获取字符串。不过,我还不知道它如何处理复杂的数据类型


    我以前从未使用或创建过Web服务,但在前端和后端使用该插件后,我在两天的时间里就在grails应用程序之间进行了一次SOAP讨论。您实际上不需要将CXF或GroovyWS直接用于非常好的ws-client插件。速度(开发)和简单性。

    我的印象是cxf用于提供Web服务而不是消费。为什么需要类加载器解决方案?您能否再举一个关于如何编写WS调用的小示例?谢谢!我们都在提供和消费,并试图保持一种依赖关系。我正在尝试Groovy WS和CXF方法,我使用wsdl2java生成了我的客户端,将生成的代码放在java文件夹中,现在我发现我不知道需要将哪些JAR文件复制到我的lib文件夹中才能成功编译。对不起,我帮不了你-我看不到生成的代码的依赖关系。我们从未使用过wsdl2java—我们的代码都是动态的。我们使用的客户机是在一行
    dcf.createClient(WSDL\u URL,classLoader)
    中创建的。我实际上创建了自己的项目()并将其与Grails一起使用。我希望对整个消息有更多的控制(与GroovyWS的wsdl解析和代理相反)。我不想将此作为一个实际的答案,以避免看起来像是我自己项目的无耻插件,而且这个项目还太年轻,无法说明它是否好用且易于使用。:)但是我想提一下,Groovy WS与CXF在同一级别吗?看起来确实很容易!当时没有。但是从那时起我就没有参与过这个项目,所以我不能说。据我所知,该项目实际上从未像有时发生的那样投入生产:)
    def arrayOfLong = objectFactory.createArrayOfLong(XXX, ids)
    result = client.invoke(methodName, arrayOfLong as Object[])
    
    def dcf = DynamicClientFactory.newInstance()
    def classLoader = Thread.currentThread().getContextClassLoader()
    
    // create a WS client
    // and assign end point address to it
    def client = dcf.createClient(WSDL_URL, classLoader)
    client.conduit.target.address.setValue(endpointUrl)
    
    // reacquire classloader because 'createClient' changes it
    def changedClassLoader = Thread.currentThread().getContextClassLoader()
    def objectFactory = changedClassLoader.
        loadClass(FACTORY_CLASS_NAME).newInstance()