当前位置:文档之家› webservice2015.12.26课堂笔记

webservice2015.12.26课堂笔记

1第一天内容回顾●什么是webservice(重点理解)远程调用技术一个系统远程调用另一个系统的服务,获取业务数据。

WebserviceWebservice是一种使用http传输SOAP协议数据的远程调用技术●Webservice入门程序服务端(掌握)第一步:创建SEI接口第二步:创建SEI实现类,@WebService注解第三步:发布服务,Endpoint类的publish方法,两个参数:1.服务地址;2.服务实现类实例第四步:测试服务是否发布成功,阅读使用说明书,确定类、方法、参数和返回值存在,确定服务发布成功WSDL地址规则:服务地址+?wsdlWSDL阅读方式:从下往上,service->binding->portType,类、方法、参数和返回值客户端第一步:wsimport命令生成客户端代码第二步:创建服务视图,视图名是从service标签name属性获取第三步:获取实现类示例,类名从portType标签的name属性获取第四步:调用查询方法,方法名名从portType下的operation标签下的name属性获取Webservice优缺点:优点:跨平台、跨防火墙、支持面向对象缺点:性能差●Webservice应用场景(了解)宏观:软件集成和复用微观:适用:1.发布一个服务,客户端类型未知,不考虑性能,建议使用webservice2.如果服务端已确定使用webservice,客户端无法选择不适用:1.考虑性能,不建议使用webservice2.同构程序下不建议使用webservice●Webservice的三要素WSDL:(理解)定义:web服务描述语言,他是webservice服务端的使用说明书,它随服务端发布成功,自动生成XML文档,描述类、方法、参数和返回值文档结构:Service:视图、服务地址Binding:协议portType:服务类、方法和参数message:参数定义types:参数数据类型阅读方式:从下往上(掌握)SOAP:(理解)定义:简单对象访问协议,它是在http上传输XML格式的数据,它跨防火墙,跨平台,它不是webservice的专有协议,soap=http+xml协议的格式:必有:envelope和body非必有:header和faultSOAP1.1和SOAP1.2区别:相同:都是使用POST发送请求协议格式相同:都有envelope和body不同点:Content-type不同:SOAP1.1:text/xml;charset=utf-8SOAP1.2:application/soap+xml;charset=utf-8命名空间不同:UDDI:目录服务●Webservice四种客户端开发方式第一种:生成客户端调用方式第二种:service编程调用方式第三种:HttpURLConnection调用方式第四种:ajax调用方式●深入开发:使用注解修改WSDL内容@WebService@WebMethod@WebParam@WebResult如果使用说明书变化了,客户端必须重新生成如果使用说明书没有变化,服务端实现类变化,客户端不用重新生成CXF2课程安排●CXF的介绍、安装和配置●CXF开发SOAP协议的应用●CXF+Spring整合开发SOAP协议的应用●CXF开发REST的应用什么是REST●CXF+Spring整合开发REST的应用●综合案例:实现手机号归属地查询网站3CXF的介绍、安装和配置3.1CXF的介绍●CXF是一个开源的webservice框架,它有很多成熟的功能,实现快速开发●CXF支持协议:SOAP1.1/1.2、REST●CXF支持数据格式:XML,JSON(REST支持)3.2CXF的安装和配置3.2.1下载地址/download.html3.2.2目录介绍3.2.3安装和配置●第一步:安装JDK,建议安装1.7●第二步:解压压缩包apache-cxf-2.7.11.zip到指定目录●第三步:配置CXF_HOME●第四步:将CXF_HOME,JAVA_HOME添加到Path路径下●第五步:测试是否配置成功,在cmd命令行下,输入wsdl2java –h●第六步:在classpath下加入%CXF_HOME%\lib\cxf-manifest.jar,(如果不使用IDE,必须配置)4CXF开发SOAP协议的应用4.1需求服务端:发布天气查询服务,接收客户端的城市名,返回天气数据给客户端客户端:客户端发送城市名给服务端,接收服务端的天气数据,打印4.2实现4.2.1服务端开发步骤:第一步:引入jar包第二步:创建SEI接口,第三步:创建SEI实现类第四步:发布服务用JaxWsServerFactoryBean类发布服务,该种方式支持接口发布;Endpoint仅支持实现类发布。

参数设置:1.设置服务接口:setServiceClass方法2.设置服务实现类:setServiceBean方法3.设置服务地址:setAddress方法发布:create方法第五步:测试服务是否发布成功。

如果直接访问服务地址,会报如下异常,因为CXF实现的方式没有提供服务说明界面,如果想访问使用说明书,直接在服务地址后+?wsdl4.2.1.1CXF SOAP1.2服务端的发布●在接口上添加如下注解:@BindingType(SOAPBinding.SOAP12HTTP_BINDING)●重启服务端4.2.2客户端开发步骤:●第零步:引入jar包●第一步:wsdl2java命令生成客户端代码Wsdl2java和wsimport类似,他也是根据WSDL地址生成客户端一个工具,CXF提供 Wsdl2java常用的参数:1)-d:指定输出目录2)-p:指定生成代码的包名,如果不指定,默认使用WSDL的命名空间的倒序Wsdl2java的特点:支持SOAP1.1和SOAP1.2客户端的生成wsdl2java -p cn.itcast.costom.weather -d . http://127.0.0.1:12345/weather?wsdl●第二步:用JaxWsProxyFactoryBean类调用服务端参数设置:1)设置服务接口:setServiceClass2)设置服务地址:setAddress●第三步:获取服务接口的实现类调用JaxWsProxyFacotryBean的create方法●第四步:调用查询方法5CXF拦截器5.1特点●拦截器可以拦截请求和响应●拦截器可以有多个●拦截器可以自定义5.2使用CXF的拦截器5.2.1简单项目●拦截器必须加到服务端●必须在服务发布之前加入●加入如下代码●重新启动服务5.2.2Web项目6CXF+Spring整合开发SOAP协议的应用6.1服务端开发步骤第一步:创建web项目,引入jar包第二步:创建SEI接口第三步:创建SEI实现类第四步:配置spring配置文件,applicationContext.xml<jaxws:server>标签,对JaxWsServerFactoryBean类的一个封装<jaxws:endpoint>标签,对Endpoint类的一个封装第五步:web.xml配置spring监听器,默认去/WEB-INF/applicationContext.xml 配置spring的配置文件地址,context-param标签配置CXF的Servlet第六步:部署到tomcat下,启动tomcat第七步:测试服务是否发布成功WSDL地址规则:http://ip:端口号/项目名称/servlet拦截路径/服务名称?wsdl 说明地址:http://ip:端口号/项目名称/servlet拦截路径/6.2客户端开发步骤:第一步:引入jar包第二步:配置spring配置文件,applicationContext.xml<jaxws:client>标签,对JaxWsProxyFactoryBean类封装第三步:初始化spring的上下文ClassPathXmlApplicationContext类初始化上下文第四步:从上下文中获取服务接口的实例getBean方法获取第五步:调用查询方法7上午回顾●CXF安装和配置第一步:安装JDK,建议1.7第二步:解压缩压缩到指定目录下第三步:配置CXF_HOME第四步:将CXF_HOME、JAVA_HOME加入到Path第五步:在cmd命令下输入wsdl2java –h●CXF开发SOAP协议的应用服务端第一步:引入jar包第二步:创建SEI接口,加入@WebService第三步:创建SEI实现类第四步:发布服务,JaxWsServerFactoryBean发布服务,参数设置:1.设置服务接口:setServiceClass2.设置服务实现类:setServiceBean3.设置服务地址:setAddress发布方法:create第五步:测试客户端第一步:引入jar包第二步:使用JaxWsProxyFactoryBean调用服务参数设置:1.设置服务接口:setServiceClass2.设置服务地址:setAddress第三步:获取服务接口实例使用JaxWsProxyFactoryBean的create方法第四步:调用查询方法●CXF+Spring整合开发SOAP应用服务端:第一步:创建web项目,引入jar包第二步:创建SEI接口第三步:创建SEI实现类第四步:配置spring配置文件,applicationContext.xml<jaxws:server>第五步:配置web.xml第六步:部署到tomcat下,启动tomcat第七步:测试WSDL地址规则:http://ip:端口号/项目名称/servlet拦截路径/服务名称?wsdl客户端第一步:引入jar包第二步:生成客户端代码第三步:配置spring的配置文件,applicationContext.xml<jaxws:client>第四步:初始化spring上下文,ClassPathXmlApplicationContext第五步:从上下文中获取服务接口的实例第六步:调用查询方法8CXF开发REST的应用8.1什么是REST●REST是一种编程的风格,可以帮助我们精确定位网上的资源(接口、方法、参数),简单易用,效率高●REST支持的数据格式:JSON、XML●REST支持请求方式:GET/POST8.2需求●查询单个学生信息查询多个学生信息8.3实现8.3.1服务端开发步骤:第一步:引入jar包第二步:创建Student.java实体类POJO在Student类上加入@XMLRootElement,注解的意思就是可以实现Java对象和XML数据之间的一个转换第三步:创建SEI接口第四步:创建SEI实现类第五步:发布服务:JAXRSServerFactoryBean类发布服务设置参数:设置服务实现类:setServiceBean设置资源类:setResourceClasses设置服务地址:setAddress发布方法:create方法第六步:测试服务是否发布成功直接访问服务地址会报如下异常直接访问接口、方法、参数http://127.0.0.1:12345/user/student/queryList/110?_type=xml查询多个学生,返回xml如果服务端发布时指定以GET(POST)方式方法,客户端必须以GET(POST)方式访问,否则报如下异常如果在同一个方法上指定XML和JSON两种媒体类型,在GET请求下,默认返回XML;在POST请求下默认返回JSON8.3.2客户端9CXF+Spring整合开发REST应用9.1服务端开发步骤:第一步:创建web项目,引入jar包第二步:创建Student.java类第三步:创建SEI接口第四步:创建SEI实现类第五步:配置spring配置文件,applicationContext.xml<jaxrs:server>发布服务,对JAXRSServerFactoryBean类的封装第六步:配置web.xmlSpring监听器Spring配置文件地址配置CXF的servlet第七步:部署到tomcat下,启动tomcat第八步:测试REST服务的使用说明书地址:http://127.0.0.1:8080/ws_4_cxf_spring_rest_server/ws/user?_wadl 9.2客户端10综合案例:手机号归属地查询网站10.1需求●将公网手机号查询网站集成到自己的系统中●把自己的查询接口发布成对外的服务●提供查询手机号归属地界面10.2设计10.3实现开发步骤:第一步:创建web项目,引入jar包第二步:生成客户端代码第三步:创建SEI接口在接口上加入@WebService注解第四步:创建SEI实现类注入公网客户端:MobileCodeWSSoap调用公网客户端实现查询功能第六步:创建MobileServlet.java接收queryMobile.jsp界面的请求调用SEI接口查询手机号信息手机号信息放到request域中,转发到对应queryMobile.jsp界面第七步:配置spring配置文件,applicationContext.xml <jaxws:server>标签发布服务<jaxws:client>标签配置公网客户端第八步:配置web.xml配置Spring监听器配置spring配置文件位置配置cxf的servlet配置MobileServlet第九步:部署到tomcat下,启动tomcat第十步:测试测试服务是否发布成功测试查询界面,功能是否正常。

相关主题