`
bugyun
  • 浏览: 559060 次
社区版块
存档分类
最新评论

WebService技术实现方案(转)

 
阅读更多

 

参考:http://blog.csdn.net/zolalad/article/details/25158995

 

Java开发中经常使用到的几种WebService技术实现方案

      随着异构系统互联需求的不断增加,WebService的重要性也日益彰显出来。凭借webservice,我们可以实现基于不同程序语言的项目的互联互通。更可以将开发好的程序接口以服务的形式发布出去供使用者调用。webservice也是SOA的基石,因此目前各大企业对于webservice开发者的需求量也是与日俱增。

      Web Service可以做什么?
      Web Servcie最主要的优点是: 即跨语言,跨平台的不同系统之间的通信。 现在企业内部的很多系统集成,企业和企业之间的系统集成的问题。Web Service是主要的解决方案。(服务重用,降低开发成本,只开放自己愿意开放的服务)。
       目前webservice开发主要有以下两种开发模式:一是传统基于SOAP模式的webservice开发;二是基于rest模式的webservice开发。

一、基于SOAP的WebService解决方案

1 、SOAP协议

       简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

2、SOAP与JAX-WS的关系

       JAX-WS(Java6引进) 是SOAP协议的一个Java的实现规范这个新规范是为了简化基于SOAP的Java开发。JAX-WS规范其实就是一组XMLweb services的JAVA API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented来实现自己的web services通过使用 Java™ API for XMLWeb Services (JAX-WS) 技术设计和开发 Web 服务,可以带来很多好处,能简化 Web 服务的开发和部署,并能加速 Web 服务的开发。
        在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议,比如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。

        2.1 实现一个基于JWS的webservice项目(直接使用JWS api 实现,不借助任何webservice框架)
        (1)在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现类SIB(Service implementation Bean)

         (2)通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口
         (3)在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。wsimport命令用于生成本地代理(即本地对象)。

       设计流程如下:

 

        当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。
       通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net、php等)的互操作。

      JAX-WS同时支持基于SOAP的Web服务和REST风格的Web服务。

      示例参考:webservice之实现一个基于JWS的webservice项目

 

3、JAX-WS与JAX-RPC之间的关系:

        JAX-WS通常可简写为JWS。当前JWS的版本为2.x。JAX-WS是JAX-RPC的后继新技术,日渐流行。Sun早期的web services的实现是JAX-RPC 1.1 (JSR 101),这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。
       JAX-WS2.0(JSR 224)是Sun新的webservices协议栈,是一个完全基于标准的实现。在binding层,使用的是theJava Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是theStreaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。

4、基于JAX-WS规范的webservice 开发框架:Apache Axis2 和Apache CXF

       4.1  利用Apache Axis2实现基于SOAP的Web Service技术
       4.2  利用Apache CXF实现基于SOAP的Web Service 技术

       注:也可以不使用框架,直接使用JAX-WS提供的接口编写webservice程序,但这样就会很复杂(参考13)。

       Apache AxisApache CXF均是是JAX-WS规范的一个开源实现框架。并且这两个框架同时也支持JAX-RS规范。

       Apache Axis2是是新一代的SOAP引擎。支持各种数据绑定技术,包括官方 Java™标准 JAXB 2.x。Axis2 还支持针对 Web 服务配置的 Java 标准JAX-WS 2.x,作为其自有的配置技术的替代选择。另外,它还支持REST (Representational State Transfer)。

       Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 spring 进行无缝集成。

       Apache CXF是在Java项目中使用的比较多的webservice开源框架,其也提供了对spring的良好支支持。

二、基于Rest的Web Service解决方案

1、Rest

       REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比基于SOAPXML-RPC技术的webservice更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST架构让人们真正理解我们的网络协议HTTP本来面貌,对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,因此REST把HTTP对一个URL资源的操作限制在GET、POST、PUT和DELETE这四个之内。这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

2、Rest和JAX-RS的关系

      JAX-RS (JavaAPI for RESTful Web Services)是Rest技术的一个Java实现规范,这个新规范提供了基于REST的webservice开发的应用程序接口。它主要关注使用Java注释和普通旧式Java对象(POJO)实现RESTful服务。尽管总是可以使用servlet实现RESTful服务,但是以这种方式实现业务逻辑需要太多HTTP GET请求。
       JAX-RS 隐藏所有 HTTP 并把servlet 绑定到 Java 类中的各个方法。注释还可以动态地提取 HTTP 请求中的信息,以及把应用程序生成的异常映射到 HTTP 响应码。由于这些原因,JAX-RS 是一种实现RESTful Java Web 服务的有效方法。

       JAX-RS提供了一些标注将一个资源类,一个POJO Java类,封装为Web资源。

       标注包括:

        @Path,标注资源类或者方法的相对路径
        @GET,@PUT,@POST,@DELETE,标注方法是HTTP请求的类型。
        @Produces,标注返回的MIME媒体类型
        @Consumes,标注可接受请求的MIME媒体类型
        @PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如        @PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。

3、利用Apache Wink实现基于REST的Web Service技术

       Apache WinkJAX-RS规范的一个开源实现的框架,用于创建RESTfulweb services应用程序。Wink包括了一个服务器端模块和一个客户端模块,用于帮助开发者快速高效的开发RESTful Web services应用。

       其它基于JAX-RS实现的框架还有Jersey(详见参考17),RestEasy,Apache Wink,Spring REST都可以完成REST的搭建和使用,各有特点,看自己的项目关注的是哪一方面,性能、集成、抑或出身。框架或者组件能让我们开发REST更简单和容易,但也需要要深入的了解为什么使用REST.

       总的来说,基于SOAP的Web Service解决方案虽然较为成熟,且安全性较好,但是使用门槛较高,在大并发情况下会有性能问题,在互联网上使用不太普及,因此并不太适合Web 2.0网站服务使用,目前大量的Web 2.0网站使用另外一种解决方案——基于RESTWeb Service技术

注:webservice是RPC远程过程调用的一种。

参考资料:

 

1  ApacheWink使用介绍:http://blog.csdn.net/kimylrong/article/details/7687593

2  用ApacheWink+Eclipse+Maven2实现RESTful WebService:

http://blog.fangjian.me/posts/2010/10/02/use-eclipse-maven2-apache-wink-for-restful-web-service/

3. 使用 Apache Wink、Eclipse 和 Maven2 开发 基于RESTful 的Webservice:

参考: http://www.ibm.com/developerworks/cn/web/wa-useapachewink/?ca=drs-tp4608 

4 RESTful Web 服务和 ApacheWink,第 3 部分: ApacheWink 和 REST

http://www.ibm.com/developerworks/cn/web/wa-apachewink3/

5 Rest风格的web服务开发-入门篇1

参考:http://www.tuicool.com/articles/7bq6ju

6 REST类型Web服务的优势

http://blog.sina.com.cn/s/blog_5572d4d30100mn5a.html

7 基于 REST 的 Web 服务:http://www.ibm.com/developerworks/cn/webservices/ws-restful/

8 构建REST风格的Web Service

http://zhangjunhd.blog.51cto.com/113473/47283/

9 使用apache CXF和maven开发基于SOAP的WebService

参考:http://www.cnblogs.com/holbrook/archive/2012/12/12/2814821.html

10关于Web Service和Rest  Service理解

参考:http://my.oschina.net/lilw/blog/170518

11  REST和SOAP WebService的区别比较

参考:http://hi.baidu.com/itaolei/item/dd8e5f0fa6f1663bf3eafc99

http://www.360doc.com/content/09/0918/23/11553_6152605.shtml

12  JWS入门

参考:  http://blog.csdn.net/ylchou/article/details/7727337

13 JWS-webservice 与Axis2-webservice的基于SOAP的快速实现

参考: http://blog.csdn.net/a1314517love/article/details/24849759

14  webServices教程(JWS-Java)(图文介绍)

考: http://wenku.baidu.com/link?url=afnra_BuxObgfW5LR_cbMM55-kLSjSnBnwAthNeTIItiITxUC51xDXZj7xicMLkpmF-KiIxKxrAj8_TWLICx-WqqVOCetHeCRaI6yz96uLy

15.远程通信的几种选择(RPCRMIWebservice,JMS的区别)

16. webservice的概念,webservice可以做什么?webservice什么时候用?

参考:http://blog.csdn.net/weiguolee/article/details/6881411

17  WebService之基于REST机制的的实现实例(Java版)

http://blog.csdn.net/zolalad/article/details/31424831

 参考: http://www.tuicool.com/articles/2qAzqq

 

分享到:
评论

相关推荐

    ysoserial-master.zip

    ysoserial是一个用于生成利用不安全的Java对象反序列化的有效负载的概念验证工具。它包含一系列在常见Java库中发现的"gadget chains",可以在特定条件下利用执行不安全的反序列化操作的Java应用程序。ysoserial项目最初在2015年AppSecCali会议上提出,包含针对Apache Commons Collections(3.x和4.x版本)、Spring Beans/Core(4.x版本)和Groovy(2.3.x版本)的利用链

    zigbee CC2530无线自组网协议栈系统代码实现协调器与终端的TI Sensor实验和Monitor使用.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

    YOLO算法-自卸卡车-挖掘机-轮式装载机数据集-2644张图像带标签-自卸卡车-挖掘机-轮式装载机.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    Oracle10gDBA学习手册中文PDF清晰版最新版本

    **Oracle 10g DBA学习手册:安装Oracle和构建数据库** **目的:** 本章节旨在指导您完成Oracle数据库软件的安装和数据库的创建。您将通过Oracle Universal Installer (OUI)了解软件安装过程,并学习如何利用Database Configuration Assistant (DBCA)创建附加数据库。 **主题概览:** 1. 利用Oracle Universal Installer (OUI)安装软件 2. 利用Database Configuration Assistant (DBCA)创建数据库 **第2章:Oracle软件的安装与数据库构建** **Oracle Universal Installer (OUI)的运用:** Oracle Universal Installer (OUI)是一个图形用户界面(GUI)工具,它允许您查看、安装和卸载机器上的Oracle软件。通过OUI,您可以轻松地管理Oracle软件的安装和维护。 **安装步骤:** 以下是使用OUI安装Oracle软件并创建数据库的具体步骤:

    消防验收过程服务--现场记录表.doc

    消防验收过程服务--现场记录表.doc

    (4655036)数据库 管理与应用 期末考试题 数据库试题

    数据库管理\09-10年第1学期数据库期末考试试卷A(改卷参考).doc。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    YOLO算法-瓶纸盒合并数据集-3161张图像带标签-纸张-纸箱-瓶子.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    职业暴露后的处理流程.docx

    职业暴露后的处理流程.docx

    Java Web开发短消息系统

    Java Web开发短消息系统

    java毕设项目之ssm基于java和mysql的多角色学生管理系统+jsp(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    批量导出多项目核心目录工具

    这是一款可以配置过滤目录及过滤的文件后缀的工具,并且支持多个项目同时输出导出,并过滤指定不需要导出的目录及文件后缀。 导出后将会保留原有的路径,并在新的文件夹中体现。

    【图像压缩】基于matlab GUI DCT图像压缩(含MAX MED MIN NONE)【含Matlab源码 9946期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    YOLO算法-挖掘机与火焰数据集-7735张图像带标签-挖掘机.zip

    YOLO算法-挖掘机与火焰数据集-7735张图像带标签-挖掘机.zip

    操作系统实验 Ucore lab5

    操作系统实验 Ucore lab5

    IMG_5950.jpg

    IMG_5950.jpg

    竞选报价评分表.docx

    竞选报价评分表.docx

    java系统,mysql、springboot等框架

    java系统,mysql、springboot等框架

    zigbee CC2530网关+4节点无线通讯实现温湿度、光敏、LED、继电器等传感节点数据的采集上传,网关通过ESP8266上传远程服务器及下发控制.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

    YOLO算法-快递衣物数据集-496张图像带标签.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    搜索引擎lucen的相关介绍 从事搜索行业程序研发、人工智能、存储等技术人员和企业

    内容概要:本文详细讲解了搜索引擎的基础原理,特别是索引机制、优化 like 前缀模糊查询的方法、建立索引的标准以及针对中文的分词处理。文章进一步深入探讨了Lucene,包括它的使用场景、特性、框架结构、Maven引入方法,尤其是Analyzer及其TokenStream的实现细节,以及自定义Analyzer的具体步骤和示例代码。 适合人群:数据库管理员、后端开发者以及希望深入了解搜索引擎底层实现的技术人员。 使用场景及目标:适用于那些需要优化数据库查询性能、实施或改进搜索引擎技术的场景。主要目标在于提高数据库的访问效率,实现高效的数据检索。 阅读建议:由于文章涉及大量的技术术语和实现细节,建议在阅读过程中对照实际开发项目,结合示例代码进行实践操作,有助于更好地理解和吸收知识点。

Global site tag (gtag.js) - Google Analytics