Groovy可以成为JAX-RPC风格的Web服务的客户端吗?

时间:2009-11-02 22:52:56

标签: web-services groovy jax-ws jax-rpc

显然,Groovy很容易使用Web服务。它可以使用需要JAX-RPC而不是JAX-WS的Web服务吗?我应该使用旧版本的Groovy或其库吗?

3 个答案:

答案 0 :(得分:2)

使用XML-RPC Web服务非常简单。您需要{class 3}}以及类路径中的Groovy XML-RPC库。

我写了一些groovy脚本来处理我们的Smack wiki,这是一个使用XML-RPC检索wiki页面的简短示例:

import groovy.net.xmlrpc.*

def c = new XMLRPCServerProxy("http://host:port/rpc/xmlrpc")
def token = c.confluence1.login("username","password")

def page = c.confluence1.getPage(token, "SPACE", "pagename")
println page.content

c.confluence1.logout(token);

使用XMLRPCServerProxy访问XML-RPC服务。如果您的服务需要复杂参数作为参数或返回一个参数,则这些参数表示为Groovy映射,属性名称为键,其值为相应值。在上面的脚本中,服务getPage返回一个Page对象,它是一个地图,但是你可以使用Groovy中的点符号直接访问地图的密钥,page.content与{{{1}相同1}}。

答案 1 :(得分:0)

你是什么意思“它能否使用需要JAX-RPC而不是JAX-WS的Web服务”?您对Groovy方面有何不同?您是否尝试将该网络服务称为documented

import groovyx.net.ws.WSClient

def proxy = new WSClient("http://localhost:6980/MathService?wsdl", this.class.classLoader)
proxy.initialize() // from 0.5.0
def result = proxy.add(1.0 as double, 2.0 as double)
assert (result == 3.0)

result = proxy.square(3.0 as double)
assert (result == 9.0)

你有任何特别的错误吗?

答案 2 :(得分:0)

由于Groovy可以使用已编译的Java类,因此有时访问基于SOAP的Web服务的最简单方法是生成存根并编写使用它们的Groovy客户端。使用“wsimport”工具(JAX-WS)或wsdl2java(JAX-RPC)生成存根,并像往常一样编写Groovy类。