服务端开发分为三步: 1.新增服务接口 2.新增服务接口实现 3.新增发布服务类
客户端开发分为两步: 1.获取wsdl文件 2.新增客户端调用类
服务端开发
1.新增服务接口
在接口上添加@WebService注解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
package com.tg.service; /** * <p>description:</p> * * @author tanggao * @date 2019/10/17 16:00 * @version 1.0 */ import javax.jws.WebService; /** * * ......................我佛慈悲...................... * _oo0oo_ * o8888888o * 88" . "88 * (| -_- |) * 0 = /0 * ___/`---'___ * .' \| |// '. * / \||| : |||// * / _||||| -卍-|||||- * | | \ - /// | | * | _| ''---/'' |_/ | * .-__ '-' ___/-. / * ___'. .' /--.-- `. .'___ * ."" '< `.____<|>_/___.' >' "". * | | : `- `.;` _ /`;.`/ - ` : | | * `_. _ __ /__ _/ .-` / / * =====`-.____`.___ _____/___.-`___.-'===== * `=---=' * ..................................................... ...... 一切有为法,如梦幻泡影,如露亦如电,应作如是观 ........ ......... 三界唯心,万法唯识 ........... ............ bug即空,空即bug,永无bug ............. ..................................................... */ /** * 在接口上添加Annotation @WebService */ @WebService public interface IMyService { public String sayHello( String name); public Person getPerson( String name,int age); }
2.新增服务接口实现类
在类上添加@WebService(endpointInterface = “com.tg.service.IMyService “)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
package com.tg.service; /** * <p>description:</p> * * @author tanggao * @date 2019/10/17 16:04 * @version 1.0 */ /** * * ......................我佛慈悲...................... * _oo0oo_ * o8888888o * 88" . "88 * (| -_- |) * 0 = /0 * ___/`---'___ * .' \| |// '. * / \||| : |||// * / _||||| -卍-|||||- * | | \ - /// | | * | _| ''---/'' |_/ | * .-__ '-' ___/-. / * ___'. .' /--.-- `. .'___ * ."" '< `.____<|>_/___.' >' "". * | | : `- `.;` _ /`;.`/ - ` : | | * `_. _ __ /__ _/ .-` / / * =====`-.____`.___ _____/___.-`___.-'===== * `=---=' * ..................................................... ...... 一切有为法,如梦幻泡影,如露亦如电,应作如是观 ........ ......... 三界唯心,万法唯识 ........... ............ bug即空,空即bug,永无bug ............. ..................................................... */ import javax.jws.WebService; /** * 其中endpointInterface指的是对外提供服务的接口 */ @WebService(endpointInterface = "com.tg.service.IMyService") public class MyServiceImpl implements IMyService { @Override public String sayHello( String name) { return "hello,"+name; } @Override public Person getPerson(String name, int age) { return new Person(name,age); } }
实现类所依赖的Person类
3.新增发布服务类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
package com.tg.service; /** * <p>description:</p> * * @author tanggao * @date 2019/10/17 16:08 * @version 1.0 */ import javax.xml.ws.Endpoint; /** * * ......................我佛慈悲...................... * _oo0oo_ * o8888888o * 88" . "88 * (| -_- |) * 0 = /0 * ___/`---'___ * .' \| |// '. * / \||| : |||// * / _||||| -卍-|||||- * | | \ - /// | | * | _| ''---/'' |_/ | * .-__ '-' ___/-. / * ___'. .' /--.-- `. .'___ * ."" '< `.____<|>_/___.' >' "". * | | : `- `.;` _ /`;.`/ - ` : | | * `_. _ __ /__ _/ .-` / / * =====`-.____`.___ _____/___.-`___.-'===== * `=---=' * ..................................................... ...... 一切有为法,如梦幻泡影,如露亦如电,应作如是观 ........ ......... 三界唯心,万法唯识 ........... ............ bug即空,空即bug,永无bug ............. ..................................................... */ public class MyServiceServer { public static void main(String[] args) { //服务发布路径 String address = "http://localhost:8888/ns"; //第二个参数:要发布这个接口的哪一个实现类 Endpoint.publish(address, new MyServiceImpl()); } }
验证服务发布是否成功,访问wsdl,wsdl路径即为发布的路径加上?wsdl
http://localhost:8888/ns?wsdl
wsdl文件
客户端开发步骤
1.获取wsdl文件
wsdl文件可以是实时的wsdl网址,比如:
http://localhost:8888/ns?wsdl
也可以是离线的wsdl文件
2.手动编写客户端代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
package com.tg.service; /** * <p>description:</p> * * @author tanggao * @date 2019/10/17 16:14 * @version 1.0 */ import javax.xml.namespace.QName; import javax.xml.ws.Service; import java.net.MalformedURLException; import java.net.URL; /** * * ......................我佛慈悲...................... * _oo0oo_ * o8888888o * 88" . "88 * (| -_- |) * 0 = /0 * ___/`---'___ * .' \| |// '. * / \||| : |||// * / _||||| -卍-|||||- * | | \ - /// | | * | _| ''---/'' |_/ | * .-__ '-' ___/-. / * ___'. .' /--.-- `. .'___ * ."" '< `.____<|>_/___.' >' "". * | | : `- `.;` _ /`;.`/ - ` : | | * `_. _ __ /__ _/ .-` / / * =====`-.____`.___ _____/___.-`___.-'===== * `=---=' * ..................................................... ...... 一切有为法,如梦幻泡影,如露亦如电,应作如是观 ........ ......... 三界唯心,万法唯识 ........... ............ bug即空,空即bug,永无bug ............. ..................................................... */ public class MyServiceClient { public static void main(String[] args) { try { //创建访问wsdl服务地址的URL URL url = new URL("http://localhost:8888/ns?wsdl"); //通过QName指明服务的具体信息 QName sName = new QName("http://service.tg.com/", "MyServiceImplService"); //创建服务 Service service = Service.create(url, sName); //实现接口 依赖于IMyService接口 IMyService ms = service.getPort(IMyService.class); System.out.println(ms.sayHello("汤高")); } catch (MalformedURLException e) { e.printStackTrace(); } } }
其中QName sName = new QName("http://service.tg.com/", "MyServiceImplService");
第一个参数,第二个参数的值来源于wsdl文件
3.JDK工具生成客户端代理
wsimport根据WSDL文件生成代理类
在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方法 注意:需要将jdk的bin目录加到环境变量中 win+r 打开cmd命令窗口,输入:
1 2
# -s 代表文件生成路径 -p 代表生成的包名 wsimport -s "E:/idea-yaxin/webserviceDemo/src/" -p "com.tg.service2" "http://localhost:8888/ns?wsdl"
在工程中生成了一些类
离线的wsdl文件生成代码的命令如下:
1 2
#直接指定wsdl的本地路径即可 wsimport -s "E:/idea-yaxin/webserviceDemo/src/" -p "com.tg.service3" E:/idea-yaxin/webserviceDemo/hello.wsdl
4.根据生成的类编写客户端代码
运行结果
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]
近期评论