WebService(jax-ws)三要素

  SOAP: 基于HTTP协议,采用XML格式,用来传递信息的格式。

  WSDL: 用来描述如何访问具体的服务。(相当于说明书)

  UDDI: 用户自己可以按UDDI标准搭建UDDI服务器,用来管理,分发,查询WebService 。其他用户可以自己注册发布WebService调用。(现在基本废弃)

1.SOAP(通讯协议)

     Simple Object Accrss Protocol,简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:

(1)SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及如何处理它们的框架;

(2)SOAP编码规则,用于表示应用程序需要使用的数据类型的实例。

(2)SOAP RPC 表示远程过程调用和应答的协定。

(4)SOAP绑定(binding),使用底层协议交换信息。

(1)请求的协议体

POST /weather HTTP/1.1

Accept: text/xml, multipart/related

Content-Type: text/xml; charset=utf-8

SOAPAction: "http://weather.itheima.com/WeatherInterface/getWeatherByCityNameRequest"

User-Agent: JAX-WS RI 2.2.4-b01

Host: 127.0.0.1:54321

Connection: keep-alive

Content-Length: 235

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

       <S:Body>

             <ns2:getWeatherByCityName xmlns:ns2="http://weather.itheima.com">

                  <cityName>北京</cityName>

             </ns2:getWeatherByCityName>

       </S:Body>

</S:Envelope>

(2)响应的协议体

HTTP/1.1 200 OK

Transfer-encoding: chunked

Content-type: text/xml; charset=utf-8

Date: Fri, 09 Oct 2015 07:23:29 GMT

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

         <S:Body>

                 <ns2:getWeatherByCityNameResponse xmlns:ns2="http://weather.itheima.com">

                           <WeatherInfo>今天风很大</WeatherInfo>

                 </ns2:getWeatherByCityNameResponse>

         </S:Body>

</S:Envelope>

(3)发布基于soap1.2协议的服务

在SEI(service endpoint interface 服务端点接口)实现类上添加如下注解

@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)

发布基于soap1.2协议的服务,需要jax-ws包要求2.2.8以上版本。

(4)soap1.2请求的协议体

POST /weather HTTP/1.1

Accept: application/soap+xml, multipart/related

Content-Type: application/soap+xml; charset=utf-8;

action="http://weather.itheima.com/WeatherInterface/getWeatherByCityNameRequest"

User-Agent: JAX-WS RI 2.2.4-b01

Host: 127.0.0.1:54321

Connection: keep-alive

Content-Length: 233

<?xml version="1.0" ?>

<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">

              <S:Body>

                    <ns2:getWeatherByCityName xmlns:ns2="http://weather.itheima.com">

                          <cityName>北京</cityName>

                    </ns2:getWeatherByCityName>

              </S:Body>

</S:Envelope>

(5)soap1.2响应的协议体

HTTP/1.1 200 OK

Transfer-encoding: chunked

Content-type: application/soap+xml; charset=utf-8

Date: Fri, 09 Oct 2015 07:54:53 GMT

<?xml version='1.0' encoding='UTF-8'?>

<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">

        <S:Body>

                  <ns2:getWeatherByCityNameResponse xmlns:ns2="http://weather.itheima.com">

                          <WeatherInfo>今天风很大</WeatherInfo>

                  </ns2:getWeatherByCityNameResponse>

        </S:Body>

</S:Envelope>

2.WSDL

     WSDL(Web Service Description Language),是一个用来描述Web服务(Web Service)和说明如何与Web服务通信的XML语言。因为是基于XML的,
所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。

(1)wsdl的阅读方法

是从下往上读。

每个wsdl有且只有一个Service节点。

1、先找Service节点

2、Service节点中找port节点。每个port对应一个PortType。

3、Port节点对应一binding节点。每个binding节点对应一个PortType

4、PortType中有operation 节点就是服务的方法。

5、operation 中有Input(参数)和output(返回值)

6、Input(参数)和output(返回值)对应message节点

7、Message对应element节点。Element节点对应complexType节点描述了参数及返回值的数据类型。

(2)使用注解规范wsdl

@WebService: 定义服务,在public class上边。

   targetNamespace:指定命名空间。

   name:portType的名称。

   portName:port的名称。

  serviceName:服务名称。

@WebResult:定义返回值。

   name:返回结果值的名称。

@WebParam:定义参数。

   name:指定参数的名称。

@WebMethod

exclude:排除指定的方法。

默认情况下,SEI实现类中所以的public方法会发布成服务方法。

如果不想把public方法发布成服务方法,需要使用@WebMethod注解。把此方法排除。在实现类中至少有一个方法发布为服务方法。

 


http://127.0.0.1:12345/weather?wsdl


http://127.0.0.1:12345/weather?xsd=1


作用: 通过注解,可以更加形像的描述Web服务。对自动生成的wsdl文档进行修改,为使用者提供一个更加清晰的wsdl文档。

当修改了WebService注解之后,会影响客户端生成的代码。调用的方法名和参数名也发生了变化。

3.UDDI

     UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。企业将自己提供的Web Service注册在UDDI,也可以使用别的企业在UDDI注册的web service服务,从而达到资源共享。

     UDDI旨在将全球的webservcie资源进行共享,促进全球经济合作。

     但是使用webservice并不是必须使用UDDI,因为用户通过WSDL知道了web service的地址,可以直接通过WSDL调用webservice。(现已废弃)

webService 三要素的更多相关文章

  1. webservice三要素

    1. 2. 3.

  2. WebService基础学习(二)—三要素

    一.Java中WebService规范      JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃).   1.JAX-WS规范    ...

  3. Web Service基础——规范及三要素

    1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...

  4. WebService_使用三要素

    一.Java中WebService规范 JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃). 1.JAX-WS规范 JAX-WS 的全 ...

  5. 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...

  6. SEO基础问题:1. 关于网站的三要素你知道多少?

    800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style ...

  7. Http协议:彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    转载:http://mp.weixin.qq.com/s/uWPls0qrqJKHkHfNLmaenQ 导语 Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必 ...

  8. 移动web开发之屏幕三要素

    × 目录 [1]屏幕尺寸 [2]分辨率 [3]像素密度 前面的话 实际上,并没有人提过屏幕三要素这个词,仅是我关于移动web开发屏幕相关部分总结归纳的术语.屏幕三要素包括屏幕尺寸.屏幕分辨率和屏幕像素 ...

  9. java 25 - 2 网络编程之 网络通信三要素

    网络通信三要素 IP地址: InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号) 端口号: 用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号) 传输协议: 通 ...

随机推荐

  1. JS中类型检测方式

    在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景: 1.typeof:主要用于检测基本类型. typeof undefined;//=> undefined typeof 'a' ...

  2. Vim的分屏功能(转)

    注:本文属于转载,源地址:http://blog.csdn.net/ithomer/article/details/6035627(博主很牛,欢迎关注) 本篇文章主要教你如何使用 Vim 分屏功能 分 ...

  3. LinkedList 源码分析

    LinkedList :双向链表结构, 内部存在frist节点 和 last节点.通过改变 首节点和 尾节点的引用来实现新增和修改 有一个内部类: //节点类,内部包括前节点和后节点,和数据项 // ...

  4. 一位资深程序员大牛给予Java初学者的学习建议

    这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?   今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶 ...

  5. 5:django 常用函数

    用django写view函数的时候,我们常常用到django.shortcuts里面的很多常用函数, 这节我们来看看这些函数的具体用法吧 render render(request, template ...

  6. Oracle数据库共享内存分配不足问题的解决

    问题: ORA-: unable to allocate bytes of shared memory ("shared pool,)","session param v ...

  7. zookeeper编程入门系列之zookeeper实现分布式进程监控和分布式共享锁(图文详解)

    本博文的主要内容有 一.zookeeper编程入门系列之利用zookeeper的临时节点的特性来监控程序是否还在运行   二.zookeeper编程入门系列之zookeeper实现分布式进程监控 三. ...

  8. centos7yum安装tomcat

    执行安装命令 [root@localhost ~]# yum -y install tomcat 查询tomcat是否安装成功 [root@localhost ~]# rpm -q tomcat to ...

  9. php 通过类名获取类的文件地址

    $reflector = new ReflectionClass("Child"); $fn = $reflector->getFileName(); return dirn ...

  10. HDU 1108.最小公倍数-辗转相除法

    最小公倍数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...