首页技术文章正文

+ 原 + webservice【黑马java培训】

更新时间:2019年07月26日 11时10分44秒 来源:黑马程序员论坛

1.WebService概述   Web Service
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。
Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。
Web Service的三要素:SOAP、WSDL、UDDI,soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口,uddi用来管理,分发,查询Web Service。
应用场景
Web Service 可以适用于应用程序集成、软件重用、跨防火墙通信等需求。不同的业务要求不同。具体如下:
l  适合使用Web Service情形
公开接口
调用webservice服务端
l  不适合使用Web Service情形
单机程序间通信
同构程序间通信
什么时候应用WebService
  
1. 同一家公司的新旧应用之间
  
2. 不同公司的应用之间
  
分析业务需求:天猫网与顺丰物流系统如何交互?
  
3. 一些提供数据的内容聚合应用:天气预报、股票行情
  

优缺点
优点
采用XML,支持跨平台远程调用;基于http的soap协议,可以跨越防火墙;支持面向对象开发;有利于软件和数据重用,实现松耦合。
缺点
由于soap是基于xml传输,本身使用xml传输会传输一些无关内容从而影响效率,随着soap协议的完善,soap协议增加了许多内容,这样就导致了使用soap去完成简单的数据传输而携带的信息更多效率再受影响;
Web Service作为web跨平台访问的标准技术,很多公司都限定要求使用WebService,但如果是简单的接口可以直接使用http传输自定义数据格式,开发更快捷。
服务网址
http://www.webxml.com.cn/在这个网址上有一些常用的公开的Web Service的服务可以使用。
术语1WSDL
Web Service描述语言WSDL(Seb Service DefinitionLanguage)就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述WebService及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
2SOAP
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。
3SEI
SEI(Web Service EndPoint Interface)是Web Service服务器端用来处理请求的接口。
4UDDI
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
5Jax-ws
JAX-WS(Java APIfor XML Web Services)规范是一组XML WebServices的JAVA API;也即JDK内置的Web Service实现,用来开发和发布Web Service服务。
6CXF
Apache的用于开发webservice服务器端和客户端的框架。
实现Web Service的框架有:AxisAxis2XfireCXF以及JAXWS-ri(JAX Web Service参考实现)
使用JDK开发WebService  开发服务端1jdk要求
Jdk在1.6之后内置的jax-ws可以直接、便捷发布Web Service,对jdk的版本要求为Jdk1.6.0_21+。
2)实现服务
编写服务端代码;需要注意的是服务类只需要添加@WebService注解即可。
3)启动服务
在完成服务代码后启动发布Web Service服务,则调用Endpoint.publish发布服务。
4)查看wsdl
地址为:http://localhost:9080/ws/hello?wsdl
一般情况wsdl的都为上述服务器端代码发布的地址后面加“?wsdl”。
5)总结
发布一个简单Web Service服务,并提供对外的wsdl文档的话;那么只需要执行如下几步即可。
1、编写服务器端类,并添加@WebService注解;
2、调用Endpoint.publish启动并发布服务。
开发客户端1wsimport
wsimport是JDK自带的工具,在JDK的bin文件夹中;主要功能是根据服务端生成的WSDL文件生成客户端代码。生成java客户端代码常使用的命令参数说明:
  
参数
  
说明
-p
指定客户端生成类的包路径;值如:cn.abc
-s
指定客户端执行类的源文件存放目录
-d
指定客户端执行类的class文件的存放目录
-keep
表示不覆盖已经生成的同名源代码
-b
指定jaxws/jaxb绑定文件或额外的schemas
-extension
扩展来支持SOAP1.2
2)生成客户端代码
利用wsimport生成客户端代码:
  
wsimport -keep -p  cn.itcast.ws.client.hello http://localhost:9080/ws/hello?wsdl
  
生成代码后,在包中包含了class文件,可以自行删除。
3)总结
1、使用wsimport根据wsdl文件生成服务端代码;
利用生成的服务器端代码调用服务。
使用EcpliseTCP/IP工具监听请求 Soap是什么
SOAP简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。用来描述传递信息的格式,有请求消息和响应消息,一般由http+xml片段构成。
一条SOAP消息就是一个普通的XML文档,包含下列元素:
l  必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
l  可选的 Header 元素,包含头部信息
l  必需的 Body 元素,包含所有的调用和响应信息
l  可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
TCP/IP Monitor
设置路径为:Window-->Preferences-->Run/Debug-->TCP/IPMonitor
请求消息体参考
POST /ws/helloHTTP/1.1
Accept:text/xml, multipart/related
Content-Type: text/xml; charset=utf-8
SOAPAction:"http://hello.ws.itcast.cn/HelloWebService/sayHelloRequest"
User-Agent:JAX-WS RI 2.2.4-b01
Host:localhost:9080
Connection:keep-alive
Content-Length:201
<?xmlversion="1.0" ?>
<S:Envelopexmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
         <S:Body>
                  <ns2:sayHelloxmlns:ns2="http://hello.ws.itcast.cn/">
                           <name>Eric</name>
                  </ns2:sayHello>
         </S:Body>
</S:Envelope>
响应消息体参考
HTTP/1.1 200 OK
Transfer-encoding:chunked
Content-type: text/xml; charset=utf-8
<?xmlversion="1.0" ?>
<S:Envelopexmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
         <S:Body>
                  <ns2:sayHelloResponsexmlns:ns2="http://hello.ws.itcast.cn/">
                           <helloResult>Hello Eric</helloResult>
                  </ns2:sayHelloResponse>
         </S:Body>
</S:Envelope>
WebService请求深入分析(WSDL) WSDL是什么
WSDL直译为Web Service定义语言;它描述了WebService服务器端与客户端交互、请求和响应数据的格式和方式。wsdl通过XML形式说明服务在什么地方、提供什么方法。
结构
WSDL文档的阅读方式是从下往上阅读。WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分;以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分;如数据的序列化则归入底部分,因为它包含具体的定义。

元素
Wsdl文档中包含的基本元素有:
Type(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD)。
Message(消息):通信数据的抽象类型化定义,它由一个或者多个 part 组成。使用Types所定义的类型来定义整个消息的数据结构(入参和出参)。
Part:消息参数
Operation(操作):对服务所支持的操作进行抽象描述,对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对(方法)。
PortType(端口类型):特定端口类型的具体协议和数据格式规范。
Binding:特定端口类型的具体协议和数据格式规范。
Port:定义为绑定和网络地址组合的单个服务端点。
Service:相关服务访问点的集合,包括其关联的接口、操作、消息等。

推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!