申请接口,书写方法。@WebService发布,@WebMethod方法发布,发布表示可被外界访问
实现接口,@WebService发布
实例化server实现类,put添加到容器中,运行这个类。URL访问:http://localhost:8081/k?wsdl
访问效果:
我们访问WSDL,查看:
能得到命名空间,对外的方法,webservice监听的url
还可以通过网络,发送xml,交互xml。去请求webservice,获得的xml需要自己解析,发送的xml也需要遵守一些请求的规范,比如说清楚一些信息。此处就略过,使用javax包下的生成,生成客户端请求类去请求webservice并获得结果,获得是结果不是xml所以也无需解析。否则自己来写的话,需要按照指定的格式去发送xml,在将请求webservice返回的xml进行解析得到结果,这是使用xml交互,下面是使用jdk自带的生成客户端代码,经过生成的代码去,无需解析,无需操心访问
打开cmd,使用Java的命令参数,wsimport -s 路径 -keep url -p 包名
wsimport -s D:\Code\Java\idea_web\idea\filedownload\bootj
sp\src\main\java\ -keep http://localhost:8081/k?wsdl -p com.kaige123.daomu.boot
jsp.webservice.t2
-s源文件放哪,-keep 访问地址,-p指定包名。包名需要指定,如果不指定,则会有问题。如果指定本包则是覆盖,外包也会有问题。因为包的名字沿用的是webservice的包,与-s指定的目录就会产生,要么找不到,那么有问题
在cmd输出命令后,再次查看工具下的包:
t2包的代码是生成的,t1包是之前自己写的webservice。
访问webservice服务类:
实例化生成的服务类,得到webservice,调用方法即可
调用效果:
服务器,收到请求:
webservice有什么用?在我看来,webservice与http是类似的,webservice作为服务者打开,生成出一溜可以调用的类,使用这些类去发起调用,获得数据。与http效果类似,可跨平台调用,可远程调用,如果语言有支持可调用其他语言,还可以跨语言调用,和http一样,目前我所看到的效果是。不过一个是http,一个是xml