所以我有几个使用 Groovy 的 ANT 脚本来处理普通 ANT 无法执行的复杂计算(至少 afaik)。我正在尝试通过 Groovy 使用 SOAP 信封访问 Axis2 Web 服务。请求和响应非常简单,除了两个complexType
属性(一个在请求中,一个在响应中)。
我偶然发现的第一件事是Groovy Soap。它非常易于使用,您只需实例化一个 SoapClient 并调用 Web 服务方法。不幸的是,它无法处理complexType
我需要的请求中的属性:
当前限制:
……
4:使用当前 groovy-1.0 版本的 Groovy SOAP 模块时,无法在客户端处理自定义数据类型。
然后我读了很多关于GroovyWS的文章。我在我的 .javac 和 $GROOVY_HOME 中创建了我的 Grape 配置文件(基本上按照项目快速指南页面user.home
上的描述做了所有事情)。当我第一次启动脚本时,Grape 以某种方式检索了 Ivy(我没有使用 Grape 的经验,但我怀疑它与 Maven 非常相似)。
然后开始我的简单脚本:
@Grab(group='org.codehaus.groovy.modules', module='groovyws',version='0.5.2')
import groovyx.net.ws.WSClient
proxy = new WSClient("http://127.0.0.1/axis2/services/ReleaseService?wsdl", this.class.classLoader)
proxy.initialize()
不幸的是,我什至无法初始化 Web 客户端(类路径中没有 Groovy Soap 库):
SEVERE: Could not compile java files for http://127.0.0.1/axis2/services/ReleaseService?wsdl.
Caught: java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "com.intershop.qa.tae.ws.xsd" doesnt contain ObjectFactory.class or jaxb.index java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated [...]
使用类路径中的 Groovy Soap 库(它似乎重载了 GroovyWS 的一些功能),我得到了:
Caught: java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition; java.lang.NoSuchMethodError:
这看起来与我最初使用 Groovy Soap 时遇到的错误非常相似。
所以我的问题是:如何complexType
通过 ANT 使用参数与 Axis2 Web 服务进行通信。我不仅限于 Groovy,但出于部署原因(约 50 个 VM 快照),我想要一些简单的东西。一个 Java 客户端可以工作,但是由于部署需要付出很大的努力(特别是如果我想在未来改变一些东西),我需要一些更接近 ANT 并且更易于部署的东西。
提前感谢其他技术的建议或修复我的 GroovyWS 实现的想法。