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

原生WebService开发(服务端 / 使用JDK工具自动生成客户端)

来源:互联网 收集:自由互联 发布时间:2021-06-24
第一次写WebService是一年前的事情了,虽然代码还留着,但是开发的过程已经忘记了,为什么说,过程忘记了? 因为这里面有一些关键点,当时没有记录下来. 最近又在看项目,正好有WebService,所以

第一次写WebService是一年前的事情了,虽然代码还留着,但是开发的过程已经忘记了,为什么说,过程忘记了? 因为这里面有一些关键点,当时没有记录下来.

最近又在看项目,正好有WebService,所以,捡起来复习下.写个Demo.

这个Demo不会用到任何的WebService框架,比如像CXF之类的...以后有空可以写一个....

先来个项目结构图吧.

如图所示,一共三个类.

一个接口,一个接口实现类,一个发布WebService的主方法.



看代码吧.

看着,在接口类上,需要加上@WebService 注解.

在类方法上面,需要加上@WebMethod注解.

package com.test.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface WebServiceServerInterface {
	@WebMethod
	public String sayHello(String name);
	
}


接口实现

随便写一个了,能明白就行.

在接口实现的类上,依旧需要加上@WebService注解

不过方法上面,就不用再加注解了.

package com.test.webservice;

import javax.jws.WebService;

@WebService
public class WebServiceServerImpl implements WebServiceServerInterface {

	@Override
	public String sayHello(String name) {
		System.out.println("Server : " + name);
		return "Hello " + name;
	}

}


然后写一个Main方法,使用JDK的一个Endpoint类,来发布WebService.

注意: Endpoint.publish(),

这个方法,接收两个参数.

第一个参数是WebService发布的路径address,端口号后面的看自己心情,随便加,最后的方法名,也是看心情.

第二个参数是 接口的实现类对象.

package com.test.webservice;

import javax.xml.ws.Endpoint;

public class Main {
	public static void main(String[] args) {
		String address = "http://localhost:8088/WebServiceDemo/sayHello";
		Endpoint.publish(address, new WebServiceServerImpl());
		System.out.println("WebService Server 发布成功");
	}
}

启动main方法,即可....这个程序会一直跑下去....你看那个小红方块....


接下来,我们使用Eclipse自带的工具,模拟客户端进行调用.

这里要注意,(最好)Eclipse 在Java EE的工作空间下...




打开那个"地球"的按钮...open web browser,在地址栏上输入我们发布的WebService地址

注意啊,这里输入的URL,需要在发布地址的后面,加上"?wsdl"这个后缀,否则会出现"无法显示此页"

出现了这篇WSDL文档,说明服务端已经成功的发布好了....



然后我们打开"地球"按钮旁边的那个按钮 "Launch the web Service explorer"

按照图片中,标注的顺序一个一个按....

然后在输入框中输入 发布的WebService地址....

按 go...



啦啦啦啦....出现了....



然后咱们点击  Operation 下面的 那个sayHello 方法.....

然后

然后


然后就有结果了....

模拟客户端调用服务端....




好了,上面说的是Eclipse自带的模拟客户端....

但是真的要写客户端应该怎么搞????

准备工作...首先你的电脑需要配置JDK环境变量....

其次提醒下....WebService 发布的Main方法,不要关闭啊....

在JDK的bin目录下面...有一个wsimport.exe这个程序...咱们利用这个程序,为我们生成WebService的客户端....

首先创建一个WebService Client 客户端....


我这里以Windos系统为例,如果你是Linux,我还真不会了...再去Google下看看....

打开Dos命令行....就是cmd...

然后在dos命令下,进入WebService Client 客户端的src文件夹下面....

就像这样子....



接下来就是见证奇迹的时刻啦.....

在命令行中输入 wsimport -keep +你发布的WebService的URL

就像这样子.....

记得地址后面要加上?wsdl



然后你再刷新下你的WebService Client客户端代码....是不是多了些什么???



那么问题来了...这么多的类,我特么应该调用哪个???

现在咱们去看看WSDL文档....

在这个文档的下面....

有一个<service>标签....这个标签,就是咱们需要调用的类...在上面的类中,也是能找到的,是不是....

<service>标签下面的<port>标签,就是服务端给我们提供的方法....



然后咱们来写个客户端代码调用一下.....

这里我先 创建service对象...

然后用service对象,调用port方法...

你们在写代码的要注意下...你看看他返回的是什么东西...

他返回的就是一个接口.....

然后咱们通过接口去调用服务端提供的方法...



结束了.....

网友评论