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