我知道有一些 Grails 的 Web 服务插件,其中一些看起来没有维护。我有一个 jar,其中包含从 wsdl 生成的所有 stub ,现在我需要开始集成。哪个插件最适合这个?此外,Web 服务使用 SOAP,而不是 REST。
最佳答案
我知道您的问题是关于消费插件的问题,但我从未使用过其中一个 Grails-WS 插件,所以我无法在那里发表评论。相反,如果您的 stub 与 JAXB 编码兼容,您可以使用 Spring Web Services 项目。您只需在 BuildConfig.groovy
中添加一个依赖项导入适当的 jar 。
http://static.springsource.org/spring-ws/sites/2.0/reference/html/client.html
因此,您只需定义一些 JAXB 编码器/解码器 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 的依赖注入(inject)来使用
WebServiceTemplate
在您的 Grails 代码中:class myService {
def myWebServiceTemplate
void myMethod {
...
Class1 myRequestObject = new Class1(data:myData)
Class2 myResponseObject = myWebServiceTemplate.marshalSendAndReceive(mySoapEndpoint, myRequestObject)
...
}
}
关于web-services - 在 Grails 中使用 Web 服务的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580783/