当前位置 : 主页 > 网页制作 > Nodejs >

【WebService】3.使用CXF开发WebService客户端

来源:互联网 收集:自由互联 发布时间:2021-06-24
我们上一次使用CXF实现了简单的WebService的服务端,现在我们来实现客户端。 首先创建一个客户端的工程: 按照以下步骤开发: (1)调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的java代
我们上一次使用CXF实现了简单的WebService的服务端,现在我们来实现客户端。

首先创建一个客户端的工程:

按照以下步骤开发:

(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
网友评论