webservice基本概念
简介
webservice即web服务,它时一种跨编程语言和跨操作系统平台的远程调用技术
Java中共有三种Webservice规范,分别是JAX-WS(JAX-RPC),JAXM&&SAAJ,JAX-RS 一三用的比较多
webservice三要素:soap wsdl uddi
术语
webservice开发规范
1JAX-WS
2,JAXM&&SAAJ
3,JAX-RS
SOAP协议
WSDL说明书
UDDI
webService
WebService学习笔记
1.应用场景:
• 解决企业内部异构系统的整合问题
• 解决一些公共资源的复用问题
2.使用案例(调用QQ接口,查看QQ是否在线)
2.1 调用QQ是否在线服务
准备工作:
在网上找到QQ在线状态的WEB服务,其中:
Endpoint: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx
WSDL : http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
测试实例:
• 首先,打开命令行,定位到java项目所在的src文件下,输入
wsimport -s. http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
编译完成后,会自动生成代码:
此时,我新建了client文件夹,用于测试.
• 在测试之前,在浏览器地址栏输入:http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
页面如下:
此时,只需关注两个地方,
1.
2.
在该段分支下的operation为方法的名称.
• 接着 通过java代码来测试服务
运行java代码:
Y代表在线,运行成功.
2.2 天气预报(解决服务出错)
准备工作
Endpoint: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
WSDL : http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
测试实例
出错
解决
将网页源代码复制到本地:
在ieda里面新建wsdl文件
将本地的:
替换成:
修改完成之后,重新运行cmd命令,将远程服务换成本都服务.
此时代码生成成功.
客户端调用代码:
运行结果:
此时,天气预报接口服务调用成功.
3.通过注解规范化发布接口
3.1 相关注解
• @WebService
• @WebMethod
• @WebResult
• @WebParam
@WebParam和@WebResult 一般贴在方法上,提高可读性
分别贴在对应的位置上:
浏览器打开:
@WebMethod
可以使某个方法不对外开放,@WebMethod(exclude=true)
@WebService注解
可以发布指定的服务,@WebService(endpointInterface = ‘指定的接口名’) ——-一般用于实现类上
如:@WebService(endpointInterface = “cn.wjh1832.webservice.IWeatherService”)
4.cxf
4.1简介
4.2环境搭建
下载cxf,配置cxf的环境变量.
配置完成后,在cmd命令行输入 wsdl2java 回车,出现以下内容代表安装成功.
4.3CXF发布服务
服务端
步骤:
• 拷jar包
• 写接口,实现类
• 发布服务
• 在浏览器访问 http://localhost:8888/weatherService?wsdl
发布成功
客户端
在命令行输入 wsdl2java -d . http://localhost:8888/weatherService?wsdl
代码生成成功.
客户端调用
4.4 cxf调用网络服务
案例: 以手机归属地查询为例
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
客户端步骤与手动发布的步骤一样.
webService
WebService学习笔记
1.应用场景:
- 解决企业内部异构系统的整合问题
- 解决一些公共资源的复用问题
2.使用案例(调用QQ接口,查看QQ是否在线)
2.1 调用QQ是否在线服务
准备工作:
在网上找到QQ在线状态的WEB服务,其中:
Endpoint: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx
WSDL : http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
测试实例:
首先,打开命令行,定位到java项目所在的src文件下,输入
wsimport -s. [http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl](http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl)<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577371747891-e69b9630-6235-41bc-9eba-9970e4345b23.png#align=left&display=inline&height=327&name=image.png&originHeight=327&originWidth=960&size=27390&status=done&style=none&width=960)<br />编译完成后,会自动生成代码:<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577371805923-d9e9504b-e3d0-4d04-b2ca-ceff5a09af0e.png#align=left&display=inline&height=397&name=image.png&originHeight=397&originWidth=483&size=31466&status=done&style=none&width=483)
此时,我新建了client文件夹,用于测试.
在测试之前,在浏览器地址栏输入:http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
页面如下:
此时,只需关注两个地方,
1.
在该段分支下的operation为方法的名称.
接着 通过java代码来测试服务
![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577372267770-f7695b07-6881-4040-89ff-fccaa5ef6b90.png#align=left&display=inline&height=259&name=image.png&originHeight=259&originWidth=631&size=26551&status=done&style=none&width=631)<br /> 运行java代码:<br /> ![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577372315005-e6353d18-5c7a-4829-9c1f-14036761c1eb.png#align=left&display=inline&height=103&name=image.png&originHeight=103&originWidth=449&size=7215&status=done&style=none&width=449)<br /> Y代表在线,运行成功.
2.2 天气预报(解决服务出错)
准备工作
Endpoint: [http://www.webxml.com.cn/WebServices/WeatherWebService.asmx](http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)<br />** **WSDL : [http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl](http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl)
测试实例
出错
解决
将网页源代码复制到本地:
在ieda里面新建wsdl文件
将本地的:<br /> <s:element ref="s:schema"/><s:any/><br />替换成:<br /> <s:any minOccurs="2" maxOccurs="2"/>
修改完成之后,重新运行cmd命令,将远程服务换成本都服务.
此时代码生成成功.
客户端调用代码:<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577410740186-d3f8c00c-8184-49ca-a02b-e1a181b9f119.png#align=left&display=inline&height=281&name=image.png&originHeight=281&originWidth=673&size=26374&status=done&style=none&width=673)
运行结果:
此时,天气预报接口服务调用成功.
3.通过注解规范化发布接口
3.1 相关注解
@WebParam和@WebResult 一般贴在方法上,提高可读性
分别贴在对应的位置上:
浏览器打开:
@WebMethod
可以使某个方法不对外开放,@WebMethod(exclude=true)
@WebService注解
可以发布指定的服务,@WebService(endpointInterface = ‘指定的接口名’) ——-一般用于实现类上
如:@WebService(endpointInterface = “cn.wjh1832.webservice.IWeatherService”)
4.cxf
4.1简介
4.2环境搭建
下载cxf,配置cxf的环境变量.
配置完成后,在cmd命令行输入 wsdl2java 回车,出现以下内容代表安装成功.
4.3CXF发布服务
服务端
步骤:
- 拷jar包
- 写接口,实现类
- 发布服务
在浏览器访问 http://localhost:8888/weatherService?wsdl
发布成功
客户端
在命令行输入 wsdl2java -d . [http://localhost:8888/weatherService?wsdl](http://localhost:8888/weatherService?wsdl)<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577433133236-6adb895d-9224-46bb-b5e6-78de6d884eb8.png#align=left&display=inline&height=58&name=image.png&originHeight=58&originWidth=931&size=5325&status=done&style=none&width=931)<br /> 代码生成成功.<br /> ![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577433249324-1bf9fa0c-4029-41f9-89b8-88c7d299586c.png#align=left&display=inline&height=269&name=image.png&originHeight=269&originWidth=264&size=14274&status=done&style=none&width=264)<br /> <br />客户端调用<br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/700608/1577435487023-7f2366e7-ba67-4936-823f-224582d24306.png#align=left&display=inline&height=573&name=image.png&originHeight=573&originWidth=1168&size=79307&status=done&style=none&width=1168)
4.4 cxf调用网络服务
案例: 以手机归属地查询为例
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
客户端步骤与手动发布的步骤一样.