WebService的讲解 和 CXF 的初步使用
2021-06-10 10:03
标签:天气预报 img 文章 3.3 googl asm eth 数据 name 几个重要知识: 相当于schema文件的id 用来指定schema文件的namespace的值 引入一个约束, 它的值是一个schema文件的namespace值 用来指定引入的schema文件的位置 schema规范中: 1. 所有标签和属性都需要有schema文件来定义 2. 所有的schema文件都需要有一个id, 但在这里它叫namespace, 3. namespace的值由什么来指定? 由targetNamespace属性来指定, 它的值是一个url(很有可能不存在) 4. 如何引入一个Schema约束? 属性: 用xmlns属性 属性值: 对应的schema文件的id(namespace值) 5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置 6. schema文件的位置由什么属性来指定? 属性: schemaLocation 属性值: namespace path 7. 如果引入了N个约束, 需要给n-1个取别名 几个重要知识: 1. 请求的组成: 请求头 请求体: 只有post请求有 2. 响应的组成 响应头 响应体 : 浏览器解析显示的数据 3. 请求的过程 1.webservice相当于HTTP+?+? ? : xml ? : schema 2.wsdl是什么? webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程 3.如何发布一个webservice? 定义SEI @webservice @webMethod 定义SEI的实现 发布: Endpoint.publish(url, SEIImplObject) 4. 如何请求一个webservice? 1.根据wsdl文档生成客户端代码 jdk/cxf 2.根据生成的代码调用webService 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言、跨平台的规范(抽象) 3. 多个跨平台、跨语言的应用间通信整合的方案(实际) 以各个网站显示天气预报功能为例: 气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client). 网站提供了天气预报的服务,但其实它们什么也没有做, 只是简单了调用了一下气象中心服务器上的一段代码而已。 web service能解决: 跨平台调用 跨语言调用 远程调用 1. 同一家公司的新旧应用之间 2. 不同公司的应用之间 分析业务需求:天猫网与中通物流系统如何交互? 3. 一些提供数据的内容聚合应用:天气预报、股票行情 直译 : WebService定义语言 1. 对应一种类型的文件.wsdl 2. 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式 3. 一个web service对应一个唯一的wsdl文档 直译: 简单对象访问协议 http+xml片断 直译: web service的终端接口, @Webservice @WebMethod 一个apache的用于开发webservice服务器端和客户端的框架 – 使用JDK开发(1.6及以上版本) – 使用CXF框架开发(工作中) – 服务器端 – 客户端 – @WebService( SEI和SEI的实现类) – @WebMethod(SEI中的所有方法) – Endpoint(终端, 发布webservice) – 查看对应的wsdl文档:…..?wsdl (一般浏览器) – 请求webService并查看请求和响应消息(webservice浏览器) – 借助jdk的wsimort.exe工具生成客户端代码: wsimport -keep url //url为wsdl文件的路径 – 借助生成的代码编写请求代码 – http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx – 借助命令工具自动生成客户端代码 – 借助生成的代码编写请求代码 异常说明: 直接生成客户端代码会抛异常, 无法生成客户端代码, 解决办法: 将 备注: 这个是Java调用net的webservice都有的问题 EndPoint: 加入cxf的jar包即可,其它不需要改动 Client: 加入cxf的jar包即可,使用cxf的 wsdl2java 命令生成代码(加入path) D:\javaeclipsWorkSpace\javaeeProject\webService_01_cxf_client3\src>wsdl2java D:\javaeclipsWorkSpace\javaeeProject\webService_01_cxf_client3\hellows.wsdl wsdl2java 异常说明: G:\myeclipseworkspace\WS-client\src>wsdl2java http://192.168.1.4/server?wsdl Exception in thread "main" java.lang.AssertionError: org.xml.sax.SAXParseExcepti on; systemId: jar:file:/F:/apache-cxf-3.0.0/lib/jaxb-xjc-2.2.7.jar!/com/sun/tool s/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; s chema_reference: 由于 accessExternalSchema 属性设置的限制而不允许 ‘file‘ 访问, 因此无法读取方案文档 ‘xjc.xsd‘。 原因: Cxf 和 jdk的版本不匹配 . 微博文章: http://blog.csdn.net/yajun0628/article/details/74458351 WebService的讲解 和 CXF 的初步使用 标签:天气预报 img 文章 3.3 googl asm eth 数据 name 原文地址:http://www.cnblogs.com/soficircle/p/7296392.html1. 复习准备
1.1. Schema约束
1.2. HTTP协议
请求行(请求方式 path http1.1)
响应状态行:
2. 面试问题
3. 关于Web Service的几个问题
3.1. Web service是什么?
3.2. 为什么要用Web service?
3.3. 什么时候使用web Service?
4. Web Service中的几个重要术语
4.1. WSDL:web service definition language
4.2. SOAP:simple object access protocal
4.3. SEI:WebService EndPoint Interface(终端)
4.4. CXF:Celtix + XFire 5. 开发webservice
5.1. 概述
5.1. 使用JDK开发WebService
1).开发服务器端
1 import javax.jws.WebMethod;
2 import javax.jws.WebService;
3
4 /**
5 * SEI
6 * @author Administrator
7 *
8 */
9 @WebService
10 public interface HelloWs {
11
12 @WebMethod
13 public String sayHello(String name);
14 }
1 import javax.jws.WebService;
2
3 import com.ittest.ws.service.HelloWs;
4 /**
5 * SEI 的实现
6 * @author Administrator
7 *
8 */
9 @WebService
10 public class HelloWsImpl implements HelloWs {
11
12 public String sayHello(String name) {
13 System.out.println("service sayHello() "+name);
14 return "Hello "+name;
15 }
16
17 }
1 import javax.xml.ws.Endpoint;
2
3 import com.ittest.ws.service.impl.HelloWsImpl;
4
5 /**
6 * 发布webservice
7 * @author Administrator
8 *
9 */
10 public class TestService {
11
12 public static void main(String[] args) {
13 String address = "http://192.168.1.100:8989/webService_01_sayService/hellows";
14 Endpoint.publish(address, new HelloWsImpl());
15 System.out.println("发布 webService_01_sayService 成功");
16 }
17 }
2). 开发客户端
5.2. 监听请求: 使用Eclipse的TCP/IP工具(端口转发)
5.3. 调用免费的web service(天气预报)
5.4. 使用CXF开发web service
上一篇:HTML入门小实例
下一篇:HTTP与HTTPS的区别