原生WebService开发(服务端 / 使用JDK工具自动生成客户端)
第一次写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; } } 注意: 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方法... 你们在写代码的要注意下...你看看他返回的是什么东西... 他返回的就是一个接口..... 然后咱们通过接口去调用服务端提供的方法... 结束了..... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |