WebService
一、 什么是webservice
1、webservice定义
•
•
2、三种规范
二、webservice应用场景(socket区别)
三、Webservice三要素:
1. soap协议
soap不是webservice专有协议,比如soap还应用于tr069(终端管理协议,基于soap的应用层协议)
3.1.1soap的定义
•
3.1.2 Soap常用的有两种
Soap 1.1
Soap1.2版本
使用方式:
3.1.3 soap协议体结构:
3.1.4利用TCP/IPmonitir监管soap协议
配置:
• 2、wsdl
• wsdl阅读从下往上读 service ,binding,protType
3.2.1wsdl:结构
3.2.2wsdl地址(服务端的地址+?wsdl)
http://127.0.0.1:12345/weather?wsdl
3、UDDI目录服务
四、 利用jax-ws进行客户端 ,服务端的开发
1、总体思路 (数据格式以XMl为例)
2、服务端开发
3、客户端开发
三种方式(不管服务端采用什么样的技术,不影响客户端)
步骤:
4.3.1 利用工具生成客户端代码
Jdk自带的工具 wsimport:
作用: 根据wsdl地址生成生成客户端调用代码
(1) 进入cmd
(2) 输入如下代码:
(3) 将生成的代码拷到客户端下
4.3.2、调用服务端:
4.3.2.1.利用wsimport生成的代码直接调用服务端
代码如下:
//创建服务视图对象
WeatherInterficeImplService weatherInterficeImplService = new WeatherInterficeImplService();
//通过服务视图对象得到portype
WeatherInterficeImpl weatherInterficeImplPort = weatherInterficeImplService.getWeatherInterficeImplPort();
//调用webservice的方法
String weather = weatherInterficeImplPort.queryWeather(“郑州”);
缺点:
4.3.2.2使用jaxws标准方法:
优点:
1、首先利用wsimport生成客户端调用代码:
2、调用服务端:
//wsdl的路径
URL wsdlDocumentLocation = new URL(“http://127.0.0.1:54321/weather?wsdl“);
//从wsdl中找到服务视图
//第一个参数:wsdl的命名空间
//第二个参数:服务视图名称
QName serviceName = new QName(“http://server.weather.jaxws.ws.itcast.cn/“, “WeatherInterfaceImplService”);
//第一步使用Service创建服务视图
Service service =Service.create(wsdlDocumentLocation, serviceName);
//从服务视图得到portType对象
//参数:portType
WeatherInterfaceImpl weatherInterfaceImpl = service.getPort(WeatherInterfaceImpl.class);
//调用porttype方法
String result = weatherInterfaceImpl.queryWeather(“北京”);
System.out.println(result);
}
五、xml解析
六、jaxws 支持pojo开发
七、jaxws 常用注解:
@WebService(
//指定wsdl的命名空间
targetNamespace=”http://weather.itcast.cn/”,
//指定porttype的名称
name=”WeatherInterface”,
serviceName=”WeatherService”
//指定哪个接口发布服务
//endpointInterface
) )
public @WebResult(name=”result”) List queryWeather(@WebParam(name=”cityName”) String city);
不使用注解:
八、使用cxf框架:
目前市面上有三种框架:
- 客户端
(1)生成服务端调用代码方式:
1、 进入cmd
2、 进入:D:\apache-cxf-3.1.8\bin目录
3、 执行:
D:\apache-cxf-3.1.8\bin>wsdl2java.bat -p com.wangyue.WebService -d e:\ -all http
://localhost:8080/easyuishop/WebService/sysUserService?wsdl
注意事项:
4、copy 生成到E盘下的代码到项目
5、用Eclipse讲代码打包成jar包,传给客户。
(2)调用服务端代码:
//创建代码工厂
JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
//设置接口类型(portType)
jaxWsProxyFactoryBean.setServiceClass(WeatherInterface.class);
//设置webservice地址
jaxWsProxyFactoryBean.setAddress(“http://127.0.0.1:12345/weather“);
//创建webservice的调用实例
WeatherInterface weatherInterface = (WeatherInterface) jaxWsProxyFactoryBean.create();
//调用webService
List weatherList = weatherInterface.queryWeather(“zhengzhou”);
for (Weather weather : weatherList) {
System.out.println(“最高温度:”+weather.getMinTemp() +” 最低温度:”+weather.getMaxTemp() +”今天温度”+weather.getTemperature() );
Date time = weather.getDate().toGregorianCalendar().getTime();
System.out.println(time);
}
}
服务端
Cx SEI开发//指定jaxws发布soap协议的webservice
JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
//指定webservice地址
jaxWsServerFactoryBean.setAddress(“http://127.0.0.1:12345/weather“);
//指定porttype
jaxWsServerFactoryBean.setServiceClass(WeatherService.class);
//指定服务类对象
jaxWsServerFactoryBean.setServiceBean(new WeatherServiceImpl());
//发布服务
jaxWsServerFactoryBean.create();- *与spring结合
- cxf发布soap1.2
- Cxf发布rest风格的webService
- Restful风格的webService和wsdl的webservice
https://blog.csdn.net/sunroyi666/article/details/51939802