我需要在Groovy中编写一个Web服务客户端。 Web服务的作者提出了各种无用的Java代码,我可以使用它来从我的Grails应用程序调用服务。
在这一点上,我认为如果我只是让他们给我WSDL并且我将自己处理客户端代码可能会更好。我正在寻找有关使用WSDL文档编写Groovy Web服务客户端的最佳方法的建议?
我希望大多数建议都涉及使用一些工具来生成客户端API,我将从Grails应用程序中调用它。如果是这样,那么重要的是我可以将这个API的生成集成到Grails构建中,因为WSDL文档可能会经常更改。
我看过使用GroovyWS,它提供了一种调用Web服务的简单方法。但是,从测试的角度来看,它似乎缺乏任何合同概念。我想为Web服务定义一个契约(接口),为此我提供了应用程序将使用的实际实现以及我的单元测试将使用的模拟实现。
你真的想这样做吗? 为什么不直接使用Java代码中没有吸引力的blob并将时间花在更高效的任务上呢?
因为在将来的某个时刻,我将负责维护那些没有吸引力的Java代码。
鉴于您希望比非常动态的GroovyWS更稳定,我建议采用简单的方法:
使用JAX-WS生成Java客户端,编译并从Groovy中使用它。 它都是静态类型的,生成Java源代码相当干净(绝对比Axis 1等旧的WS客户端框架好得多)。
当然,这需要您有权访问WSDL。