您的位置:首页 > 其它

CXF客户端开发--动态调用webservice

2014-12-09 13:55 344 查看
之前关于webservice的文章中已经介绍了CXF JAX-WS proxy客户端模式。JAX-WS proxy模式需要在客户端使用wsdl2java生成代理接口,这种方式相对于动态调用,其效率相对较高。但是前期的工作量比较大,有时我们知道一个服务接口URL、方法名、入参schema、返回参数schema,不想和jax-ws proxy模式那么繁琐的生成客户端代码,就需要使用动态调用。

动态调用的方式很简单,代码一般很简洁。需要使用一个动态客户端工厂类:JaxWsDynamicClientFactory,并有它创建某个接口的客户端。如下:

public class DynamicClient {

private final static String SERVICE_URL = "http://localhost:8080/services/xxtInter?wsdl";

public static void main(String[] args) throws Exeception{

JaxWsDynamicClientFactory FACTORY = JaxWsDynamicClientFactory.newInstance();//1,获取一个工厂实例

Client client =
FACTORY.createClient(serviceURL);//2,生成针对指定服务接口URL的客户端

Object[] objs = client.invoke("sayHi","hello world!");//3,调用指定的方法,注意入参第一个为方法名称,第二个为方法的参数(可以传入一个参数列表,一般为数组)

System.out.print(objs[0].toString());

}

}

到此,完成CXF客户端动态调用的流程。看看代码是不是很简单,明了。

不过在调用方法的步骤,需要注意,方法参数(针对复杂类型,如pojo,list等)的schema必须和服务端的一样。

关于动态调用传递复杂类型参数,将在后面文章中进行介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: