我们上一次使用CXF实现了简单的WebService的服务端,现在我们来实现客户端。 首先创建一个客户端的工程: 按照以下步骤开发: (1)调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的java代
首先创建一个客户端的工程:
按照以下步骤开发:
(1)调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的java代码。
WSDL就是Web Service Definition Language,它描述了我们的WebService有哪些操作可以调用。任何语言实现了WebService,都需要提供、并暴露WSDL文档。
我们回顾一下上一次我们输入服务端的服务路径后的结果:
这就是一些符合WSDL规范的语句。
我们用cmd控制台进入我们刚刚创建的工程下:
然后调用CXF提供的wsdl2java工具,去访问我们的服务(首先别忘了开启服务)。
我们可以看到我们的客户端下面生成了三个文件夹,我们回到MyEclipse下,可以看到我们的客户端下面生成了一些代码:
这些都是系统生成的,而且样子和我们的服务端的一些类很相似。这里我们先不管。
(2)找到wsdl2java所生成类中,继承了Service的类。
我们在生成的HelloworldWs.java中发现其继承了Service,该类的实例可以当成工厂来使用。
(3)调用Service子类的实例的getXxxPort方法,返回远程WebService的代理。
我们创建一个服务启动类:
我们编写里面的逻辑:
package show; import org.java.cxf.ws.HelloWorld; import org.java.cxf.ws.impl.HelloworldWs; public class ClientMain { public static void main(String[] args) { HelloworldWs factory=new HelloworldWs(); //此处返回的只是远程Web Service的代理 HelloWorld hw=factory.getHelloworldWsPort(); System.out.println(hw.sayHi("孙悟空")); } }
运行之后(要先保证服务端开启)的效果:
我们并没有从服务端拷贝代码,但是我们运行之后就会得到服务端提供的sayHi的方法的效果。
为什么那么神奇呢?究竟发生了什么?请看下一篇总结。
转载请注明出处:http://www.voidcn.com/article/p-vpivoyfa-bbb.html