02.WebService_使用三要素

02.WebService_使用三要素

一、Java中WebService规范

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

1.JAX-WS规范

JAX-WS 的全称为Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被JAX-WS 规范取代。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。

采用标准SOAP(Simple Object Access Protocol) 协议传输,soap属于w3c标准。Soap协议是基于http的应用层协议,soap协议传输是xml数据。

采用wsdl作为描述语言即webservice使用说明书,wsdl属w3c标准。

xml是webservice的跨平台的基础,XML主要的优点在于它既与平台无关,又与厂商无关。

XSD,W3C为webservice制定了一套传输数据类型,使用xml进行描述,即XSD(XML Schema Datatypes),任何编程语言写的webservice接口在发送数据时都要转换成webservice标准的XSD发送。

2.JAX-RS规范

JAX-RS 是JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行。

支持JAX-RS服务规范的框架有:

CXF——XFire和Celtix的合并(一个由IONA赞助的开源ESB,最初寄存在ObjectWeb上)。

Jersey——Sun公司的JAX-RS参考实现。

RESTEasy——JBoss的JAX-RS项目。

Restlet——也许是最早的REST框架了,它JAX-RS之前就有了。

注:REST 是一种软件架构模式,只是一种风格,rest服务采用HTTP 做传输协议。

二、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)请求的协议体

(2)响应的协议体

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

在SEI实现类上添加如下注解

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

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

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

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

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。

三、区域查询系统

1.需求分析

创建区域查询服务系统,对外发布WebService服务,供客户端调用,根据parentid查询区域信息,返回区域信息列表,并支持分页。

2.服务端

第一步:创建一java工程

第二步:导入mysql的数据库驱动。

第三步:创建一个dao。根据parentid查询区域列表。返回区域pojo的list。支持分页。

第四步:创建一个SEI

第五步:创建SEI实现类。@Webservice注解不要忘。

第六步:发布服务。

AreaDao.java

AreaInterface.java

AreaInterfaceImpl.java

AreaServer.java

3.客户端

第一步:创建一个java工程

第二步:基于wsdl生成客户端调用代码

第三步:创建服务视图

第四步:获得PortType对象

第五步:调用服务端方法。

AreaClient.java

本文分享自微信公众号 - Java帮帮(javahelp),作者:奋斗蒙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • stuts2返回json数据简单实现

    stuts2返回json数据简单实现 整理了下struts2的简单demo,完成JSON数据的展示。基本流程是在Action定义一个对象属性,例如map类型的一...

    Java帮帮
  • 【Java提高十八】Map接口集合详解

    四、Map接口 Map与List、Set接口不同,它是由一系列键值对组成的集合,提供了key到Value的映射。同时它也没有继承Collecti...

    Java帮帮
  • Java基础-25(06)图形用户界面编程GUI

    package cn.itcast.view;(7) import cn.itcast.util.UiUtil; import java.util.loggi...

    Java帮帮
  • 当资本逃离CRM时 EC何以拿到腾讯融资?

    当跟资本聊起CRM的时候,很多资本方都苦不堪言,五年的时间,让很多资本开始对CRM市场望而却步,因为他们没有看到中国Salesforce到来,看到的却是每年一个...

    人称T客
  • 前沿 | 18000块GPU的深度学习机器:橡树岭实验室即将推出Summit超级计算机

    选自Nextplatform 作者:Nicole Hemsoth 机器之心编译 参与:黄小天、李泽南 美国橡树岭国家实验室的「Titan」超级计算机是「美洲虎」...

    机器之心
  • 37 个你必须知道的现代数据中心术语

    在今日的信息科技社会,现代数据中心这个术语越来越受到领导者的重视。云计算、闪存、软件定义网络(SDN)、容器,以及大量的编排及自动化工具。这些新型技术构成了现代...

    Xiaoxing Ye
  • 张贤伟:互联网条件下软件方法专利的直接侵权

    张贤伟  厦门大学法学院博士 一、     软件方法专利直接侵权问题   软件方法专利侵权有其特殊性,产品专利它是由部件组成的,但是方法专利是由步骤组...

    腾讯研究院
  • 操作系统指纹识别概述

    作者 Taskiller 操作系统指纹识别一般用来帮助用户识别某台设备上运行的操作系统类型。通过分析设备往网络发送的数据包中某些协议标记、选项和数据,我们可以推...

    FB客服
  • 服务网格(Service Mesh)与Kubernetes的服务发现

    伴随着微服务架构,容器编排技术和云原生(Cloud Native)应用的发展,William Morgan 两年前一篇《What's a service mes...

    曲奇泡芙
  • Hyperf 初体验-AOP 切面

    再说 AOP 之前,肯定都知道 OOP 是什么,面向对象编程。那么 AOP 就是 面向切面编程

    hedeqiang

扫码关注云+社区

领取腾讯云代金券