在Grails中使用Web服务的最佳方法是什么?

时间:2011-12-20 19:21:05

标签: web-services grails soap

我知道Grails有一些Web服务插件,其中一些看起来好像没有维护。我有一个包含从wsdl生成的所有存根的jar,现在我需要开始集成。哪个插件最适合这个?此外,Web服务使用SOAP,而不是REST。

2 个答案:

答案 0 :(得分:1)

我知道你的问题是关于一个消费的插件,但我从来没有使用过Grails-WS插件之一,所以我不能在那里发表评论。相反,如果您的存根与JAXB编组兼容,则可以使用Spring Web Services项目。您只需在BuildConfig.groovy中添加依赖项即可导入相应的jar。

http://static.springsource.org/spring-ws/sites/2.0/reference/html/client.html

因此,您只需定义一些JAXB marshaller / unmarshaller bean和Web服务处理程序。您可以从上面的文档中获得所需的详细信息,并在指定自己的连接处理程序或拦截器时定义超时和安全性。

myJaxb2Marshaller(org.springframework.oxm.jaxb.Jaxb2Marshaller) {
    classesToBeBound = ['my.class.Class1','my.class.Class2']
}

myWebServiceMessageFactory(org.springframework.ws.soap.saaj.SaajSoapMessageFactory)

myWebServiceTemplate(org.springframework.ws.client.core.WebServiceTemplate, ref('myWebServiceMessageFactory')) {
    marshaller = ref('myJaxb2Marshaller')
    unmarshaller = ref('myJaxb2Marshaller')
}

此时您可以使用Grail的依赖注入来使用Grails代码中的WebServiceTemplate

class myService {
    def myWebServiceTemplate

    void myMethod {
        ...
        Class1 myRequestObject = new Class1(data:myData)
        Class2 myResponseObject = myWebServiceTemplate.marshalSendAndReceive(mySoapEndpoint, myRequestObject)
        ...
    }
}

答案 1 :(得分:0)

我建议使用Spring的方式。 毕竟你是用grails开发的,所以可能你不需要插件。 阅读Remoting and webservices上的Spring文档,第19.5.2节“使用JAX-RPC访问Web服务”。

不需要任何jar的存根。 Spring会为你生成一切......

P.S。 :我假设你知道如何在grails中声明spring bean ......