一、webservice介绍  
 
   1.使用场景
   
      - 不同的移动客户端访问
      - 需要访问第三方的项目

2.访问第三方应用的方式
      ISO的七层模型  : 物理层、数据链路层、网络层、传输层、表示层、会话层、应用层
     - Socket访问  : Socket属于传输层,它是对Tcp/ip协议的实现,包含TCP/UDP,它是所有通信协议
                       的基础,Http协议需要Socket支持,以Socket作为基础
        Socket通信特点:
 1. 开启端口,该通信是 长连接的通信 ,很容易被防火墙拦截,可以通过心跳机制
              来实现 ,开发难度片段
 2. 传输的数据一般是字符串 ,可读性不强
           lj|16|1|60|up  
          3. socket端口不便于推广 
    http:17.23.23.2:2345   www.jd.com   www.360buy.com
 4. 性能相对于其他的通信协议是最优的
     - Http协议访问 :属于应用层的协议,对Socket进行了封装
          1. 跨平台 
 2. 传数据不够友好 : 
    get请求: http://127.0.0.1:8888?username=lj&pwd=1234
 3. 对第三方应用提供的服务,希望对外暴露服务接口
   
     问题:
       1. 数据封装不够友好 :可以用xml封装数据 
       2. 希望给第三方应用提供web方式的服务  (http + xml) = web  Service
          
     - Webservice
       1.webService介绍
         
       2.webservice的规则
         - xml 
- soap :(simple object access 协议) :简单对象访问协议
- wsdl : webservice描述语言 ,它也是xml实现的
       3.webservice的优点
         
       4.webservice专业名称
         1. xml
         2. wsdl
3. soap

二、调用第三方的WS服务

1.体验webservice    www.webxml.com.cn
     
   2.准备客户端,调用第三方的webservice服务,让本项目有手机查号的功能
     - 一般访问方式  HttpClient
       1. Http-GET
       2. Http-Post 
       3. Soap (http+xml)
     问题:1. 如何解析结果
           2. 如何传递对象参数

- 推荐的访问方式
          在jdk 1.6 版本以后 ,通过jax-ws 包提供对webservice的支持 
    - 该方式通过注解的方式来声明webservice 
    - 通过 jdk EndPoint.publish()发布webserive服务

早期的版本 : jax-rpc (remote produce call)

webservice 纳入 w3c规范,其他的平台都支持该规范 :JEE\Php\.NET
   都支持wsimport 方式 : 对远程的webservice生成本地代理,再通过本地代理
                          来访问webservice
        - wsimport 命令的位置: 
  C:\Program Files\Java\jdk1.7.0_04\bin
- 要求:
 1. jdk的 版本要在 jdk 1.6.21及以上 
 2. 操作系统安装的jdk版本 与 MyEclispe 及 默认指定的版本要一致

- wsimport使用: 
 记得设置jdk\bin  环境变量  指定path 
           语法  wsimport [opations] <wsdl_uri>
    - wsdl_uri:wsdl 的统一资源标识符
    - d  :指定要输出的文件的位置
    - s  :表示要解析java的源码 ,默认解析出的是class字节码 
    - p  : 指定输出的包名
 
  
三、自定义及发布一个webservice服务
    - 声明 某个业务服务为webservice服务
       通过@webservice 注解来声明
    - 发布webservice服务
       Endpoint.publish()发布
    - 通过wsimport生成本地代理来访问自己发布的webservice
       wsimport
      
     
四、webservice传输实体对象
  
五、练习:
 
 
   1. 调用教师机的ws服务
      步骤:
       1. 系统jdk环境与myeclipse jdk 环境一致  ,1.6.021以上  
       2. 知道服务端的WDSL路径
           http://192.168.114.10:8888/ws/phoneService?WSDL
       3. 命令行 wsimport -s ./ -p  cn.itcast.ws.d http://192.168.114.10:8888/ws/phoneService?WSDL
       4. 导入通过wsimport 解析的java类,再编写一个main测试
                MoblieOsInfoService ws=new MoblieOsInfoService();
MoblieOsInfo phoneServicePort = ws.getMoblieOsInfoPort()
                 PhoneOs phone=phoneServicePort.getMobileOsInfo("android");

2. 创建自己的ws服务并发布、调用
   步骤: 1.声明webservice服务 (@webService)2. 发布webservice(EndPoint.publish) 3. 客户端访问(wsimport)
      1. 创建一个要通过webservice对外发布的java bean : PhoneService
      2. 在java 的入口main方法 通过EndPoint 发布一个服务端点
         String address1="http://192.168.19.10:8888/ws/phoneService";
         Endpoint.publish(address1, new PhoneService());
         System.out.println("adrress1的WSDL地址"+address1+"?WSDL");

六、WSDL文件介绍 :webservice服务说明

七、通过注解配置修改wsdl文件, 让它具有更好的可读性 
   需求:
     1. 想改方法的输入参数名、返回参数名
     2. 想改服务名,方法名
     3. 对该业务类的某些方法不想对外发布 
       -  默认只有public 修饰的方法会以webservice的形式对外发布 
而 private  受保护的,缺省的,都不会发布
       - 某些public 方法也不想对外发布

实现:注解配置修改wsdl文件

重点:
    1. webservice 的作用、规则、优点
    2. 专业名词
       wsdl 、 soap 、 xml
    3. wsimport 生成本地代理
    4. 通过JEE方式声明与发布webservice
       - 声明 :@webservice
       - 发布 :EndPoint
    5. WSDL文件描述 
    6. 通过修改注解,配置wsdl文件,增强可读性

Web Service 教程相关推荐

  1. 视频专辑:Web Service视频教程

    为什么80%的码农都做不了架构师?>>>    1   1. Web Service教程 XML DTD详解 2013-10-31 12:40 | 播放(16) | 评论(0) | ...

  2. [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端

    [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端 一般开发Web Service,是选写服务端,再根据生成的WSDL文件生成客户端.看过一本SOA的书中 ...

  3. 最详细的使用 soapui 消费 SAP Cloud for Customer Web service 的教程

    本文就以SAP Cloud for Customer的web service消费这个需求为例,来讲解soapui这个工具的使用步骤. 使用soapui消费web service,最简单的方式是在soa ...

  4. Python中使用GoogleMaps API(包含Geocoding API,Places API Web Service )详细教程

    前言 业务需要根据经纬度获取该城市的邮政编码,需要通过调用GoogleMaps来搜索地点,来获取地点的详细信息.于是查阅了一些相关的资料,特意分享出来给大家参考参考. 涉及相关的资料: google官 ...

  5. 使用JAX-RS创建RESTful Web Service

    guice resteasy http://www.cnblogs.com/ydxblog/p/7891224.html http://blog.csdn.net/withiter/article/d ...

  6. 通向架构师的道路(第十二天)之Axis2 Web Service(三)

    一.SOAPIn Axis2 在前两天的教程中,我们学习到了用Axis2如何进行复杂数据.简单数据进行传输. 正如我在前一天教程中所说,在web service的世界里,一切都是基于SOAP的,因此在 ...

  7. 通向架构师的道路(第十天)之Axis2 Web Service(一)

    一.Axis2简介 1.1 介绍Axis2 Axis框架来自 Apache 开放源代码组织,它是基于Java语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP withAttachments ...

  8. 使用nodejs消费SAP Cloud for Customer上的Web service

    Jerry在公众号文章C4C和微信集成系列教程里曾经使用nodejs去消费C4C提供的标准webservice. 看一个具体例子:C4C里Individual Customers可以维护Social ...

  9. 在 Visual Studio 2010 中创建 ASP.Net Web Service

    第一步:创建一个"ASP.Net Empty Web Application"项目 第二步:在项目中添加"Web Service"新项目 第一步之后,Visua ...

最新文章

  1. Markdown矩阵、表格和数学公式
  2. jsp页面中使用超链接标签a中的属性href和onclick同时触发怎么执行
  3. cmd运行python服务器,python如何利用paramiko执行服务器命令
  4. 由于更换了java版本,Eclipse启动时报错:JRE or JDK must be available in order to run Eclipse
  5. python数字从大到小排列_Python练习题 005:三个数字由大到小排序输出
  6. java集合——集合框架
  7. Python(21)--变量进阶
  8. WinSock API相关函数
  9. 京瓷m1025维修模式进不去_多个品牌复印机进入维修模式步骤大全
  10. 简谈触摸板程序的实现(一)
  11. Linux命令行大全
  12. 前端开发:颜色代码速查表【英文颜色、HEX格式、RGB格式】
  13. 大学英语四级考试大纲
  14. unityShader物体表面流光效果
  15. 计算机怎么链接网络打印机,连接网络打印机,教您如何使用网络连接打印机
  16. readyState的值的含义
  17. 计算机word中的行间距在哪里设置,word怎么把所有行间距设置成22磅
  18. 关于Maven打包Java Web项目以及热部署插件Jrebel的使用
  19. EverNote开源协议-Android
  20. 小米2S手机开启开发者选项

热门文章

  1. 别去送死了,Selenium 爬虫暴露了几十个特征!
  2. html的侧边栏实现代码
  3. 数据中心(IDC)的UPS电池容量配置的计算方法
  4. i9500android操作系统跑流量,三星I9500刷机包 百度云ROM54公测版 因为专注 所以精进...
  5. Python有趣|寻找知乎最美小姐姐
  6. java.sql.SQLException: ORA-00904:标识符无效
  7. docker限制容器内存
  8. VMware12 虚拟机共享文件夹磁盘映射设置方法
  9. LaTeX自定义封面设计
  10. Labview和西门子PLC smart200 OPC通讯仪器串口通讯