我只需要一个 SOAP 客户端来进行远程调用,但我有点像 Groovy 菜鸟。根据Groovy 文档,不推荐使用标准的 Groovy SOAP 库。相反,文档将您指向一个更新的库:GroovyWS。
不幸的是,GroovyWS 有一个警告说该项目处于休眠状态,然后它会将您指向Groovy WSLite。
Groovy WSLite 实际上似乎仍在积极开发中,但与之前的 2 个库相比,它并不是很“Groovy-ish”。wslite 是每个人都在使用的吗?
我认为您会发现GroovyWS和groovy-wslite(和HTTP Builder)都在项目中用作 Groovy SOAP 客户端库,并且决定可能是其中一个有效,哪个具有用户喜欢的 API/方法(在那个命令)。
如果您喜欢GroovyWS提供的 API 及其代理 WSDL 文档的能力,我的建议是尝试一下它,看看它是否适用于您需要与之交互的服务。SOAP 世界中的情况并没有太大变化,所以我不会太担心它最近的更新时间。如果它有效,那么你就完成了,如果你遇到一些你无法轻易找到帮助的问题,那么我会尝试替代方案。
groovy-wslite(免责声明:我是作者)旨在提供一种轻量级(就依赖项而言)替代方案,它可以交换 WSDL 解析/代理的便利性,以便更轻松地对生成的soap调用进行更多控制而无需挖掘深入了解一些底层 Java 框架(如 CXF)的内部结构。有些人更喜欢在这样的框架之上构建库的附加功能,而另一些人可能更喜欢其他方法的简单性。
Groovy 之所以如此出色,是因为它与 Java 集成是多么容易。因此,正如其他人已经指出的那样,您可以很容易地与 Spring WS、CXF 和 JAX-WS 等 Java Web 服务客户端集成。
我会远离groovyws,这很糟糕。看了一圈,最终选择了使用spring web services和contract-driven web services的方案。
客户端使用生成soap 请求XML 的toXml() 方法实例化命令对象。然后使用 WebServiceTemplate 发送到端点。
对于服务器,我们使用 Spring Web 服务端点。解析传入的 xml 是小菜一碟,您不需要将 XML 编组为对象,因为 XmlSlurper 产生的 GPathResult 是完全可管理的。我们的服务器运行在 grails 之上,因此我们利用了 springws grails 插件,使 Endpoints 的创建更加容易。
不过有一个警告。grails 的 springws 插件已过时。Spring web services 现在是 2.x 版本,springws 插件带有 1.4.xi think。但是,没有插件也很容易使用,而且我认为将插件升级到较新的 api 并不难。
另外,如果你想做 MTOM,springws 会稍微复杂一些,因为你需要更深入地研究消息处理。我可以用 Spring Web 服务做一些非常高级的 ws-security 东西,但是没问题。
否则我会使用 cxf(很好地处理 MTOM),如果你想坚持使用 jax-ws 等。过热可能更高,因为所有动态生成的代理和 pojo。此外,它不是合同驱动的,这对我们来说是一个很大的优势。
看来你自己做了功课!Groovy WS Lite 似乎目前正在工作。如果您想使用 Groovy 查看 spring-ws 的实际效果,那么这里是我在 github 中创建的一个测试套件项目。
或者,您可以改用 JSON。SOAP 已经过时了。上面有关 groovy 文档和 GroovyWS 的链接无处可去