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. how to create view (windows)

    View Server List  IP address: 200.xx.xx.xx How to create a new view ssh new view server by your Unix ...

  2. [How to] UILocalNotification 的使用

    1.简介 IOS共分为本地和远程通知两种通知,本问介绍本地通知UILocalNotification的基本使用方法. 2.本地通知的实现: 步骤一:新建工程 在Xcode中新建一个single vie ...

  3. IDEA 内存设置

    -server -Xms2g -Xmx2g -XX:NewRatio=3 -Xss16m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled - ...

  4. Webstorm和Eclipse常用快捷键

    快捷键配置 点击“File”-> “settings” Webstorm预置了其他编辑器的快捷键配置,可以点击 默认配置-Eclipse的常用快捷键对照表 查找/代替 Webstorm快捷键 E ...

  5. JS实现判断滚动条滚到页面底部并执行事件的方法

    需要了解三个dom元素,分别是:clientHeight.offsetHeight.scrollTop. clientHeight:这个元素的高度,占用整个空间的高度,所以,如果一个div有滚动条,那 ...

  6. 阻止父类的create,是无法阻止的

  7. "GrabCut" - Interactive Foreground Extraction using Iter

    转载自:http://blog.csdn.net/zouxy09/article/details/8534954 有源代码的博客:http://www.cnblogs.com/xrwang/archi ...

  8. 不断学习UI框架的写法

    在web开发的过程中,我们会需要用到很多大大小小的插件,比如文本框,下拉树,下拉框等等各种各样的都需要.或许在开发的网页中会用到同一种插件来满足各种各样复杂的业务逻辑,比如简单的一个下拉树,有的地方需 ...

  9. SPOJ - PHRASES K - Relevant Phrases of Annihilation

    K - Relevant Phrases of Annihilation 题目大意:给你 n 个串,问你最长的在每个字符串中出现两次且不重叠的子串的长度. 思路:二分长度,然后将height分块,看是 ...

  10. MySQL常用的几个数据类型详解

    一.字符串类型 类型 范围 说明   Char(N) [ binary] N=1~255 个字节binary :分辨大小写 固定长度 std_name cahr(32) not null VarCha ...