1. 什么是WS-Security?

WS-Security 是一个 SOAP 的扩展,它提供了对 SOAP 消息的认证和加密。 在介绍 WS-Security 之前,我们有必要了解一下 WS-Security 存在的原因。很多刚刚接触 Web 服务的人都将 SOAP 看作是通过 HTTP 在两个端点之间交换消息的方法。通过 HTTP 可以验证调用方的身份、对消息签名以及对消息内容加密。这可以在以下几方面确保消息的安全性:调用方是已知的,消息接收方可以验证消息在传输过程中没有被 更改,监视网络通信的实体无法识别出所交换的数据。但是如果准备采用 SOAP 消息传递来解决某些复杂问题,则仅仅基于 HTTP 的安全性是不够的。这些复杂问题通常涉及沿着比请求/响应更为复杂的路径发送消息,或者不使用 HTTP 进行传输。调用方以及消息的标识、完整性和安全性需要在多个跃点中保留。沿路由可能需要多个加密密钥。此外还要跨越信任域。HTTP 及其安全机制只面向点到点的安全性。而更复杂的解决方案则需要端到端的安全性。WS-Security 解决的是如何在多点消息路径中维护一个安全的环境。

2. 什么是WS-Addressing?

WS-Addressing 提供了多种与传输无关的机制对 Web 服务和消息进行寻址。 具体来说,此规范定义 XML 元素以标识 Web 服务终结点,并保护消息中的端到端终结点标识。 此规范允许消息处理系统支持通过网络(包含处理节点)以一种与传输无关的方式进行消息处理,而这些处理节点可以是终结点管理器、防火墙和网关。 Web 服务寻址 (WS-Addressing) 定义了两种结构,它们传达的信息一般由传输协议和消息处理系统以一种可互操作的方式提供。 这些结构将该底层信息规格化为一种统一的格式,而对这种格式的处理可以独立于传输或应用程序。 这两种结构就是终结点引用 和消息信息标头。

3. 什么是WS-RM (WS-ReliableMessaging)?

WS-RM 是一个 Web 服务规范,支持在 Web 服务客户机或资源和 Web 服务提供商之间实现 SOAP 消息的可靠传送。目前,有两个层次的规范:1.0 和 1.1,它们在 WebSphere Application Server Version 7(此后简称为 Application Server)中都得到支持。 WS-RM 规范定义了一个线上 (on-the-wire) 协议,旨在解决试图通过 HTTP 之类的连接传送 SOAP 消息时遇到的两个问题: 1. 源或目标端点暂时不可用时(例如,服务器意外重启时),客户机如何确保 SOAP 消息传送? 2. 从源到目标端点的路径跨越几个不同的传输连接(比如通过防火墙)时,客户机如何确保 SOAP 消息传送?这些连接中的任何一个都可能失败;比如,由于超时。客户机如何检测该状况并重新尝试传送消息? WS-RM 协议通过定义如何重新发送它认为没有成功发送的消息,以及防止向目标应用程序发送重复消息解决了以上两个问题。通过 Application Server V7 WS-RM 实现,应用程序开发人员可以集中精力关注具体应用程序逻辑,而不是编码与应用程序无关的重试逻辑。 Application Server 仅支持对 Java™ API for XML (JAX-WS) 应用程序和服务应用 WS-RM。您不能将 WS-RM 应用到 JAX-Remote Procedure Call (RPC) 应用程序或服务内的具体操作。

4. 什么是WS-Policy?

Web服务策略框架规范(Web Services Policy Framework,WS-Policy)提供了一种灵活、可扩展的语法,用于表示基于XML Web services的系统中实体的能力、要求和一般特性。WS-Policy定义了一个框架和一个模型,将这些特性表示为策略。策略表示法既支持简单的声明 式断言,也支持比较复杂的条件式断言。策略断言是要表示行为的个体要求、能力或其他特性。例如,可以创建一个策略断言,定义这样一个要求:必须使用受信任 的X.509证书签名SOAP消息主体。WS-Policy只是一个框架,为特定的域定义一套特定的策略断言则是系统的任务。WebLogic Server 9.0为WS-Security和WS-RM(Reliable Messaging)定义了策略断言。有了策略断言之后,还需要将其与web服务关联。至于如何关联,请看我下一篇关于WS- PolicyAttachment的文章。

5. 什么是MTOM(Message Transmission Optimization Mechanism)?

MTOM 全称Message Transmission Optimization Mechanism,即消息传输优化机制。它提出的模型适用于大量数据的交互情况。针对Base64编码情况带来的开销提出的解决方案。当数据量小的时 候,SOAP依然使用XML进行消息的传递。 但是在大量数据情况下,如果数据依然进行Base64编码,会带来33%的额外开销,这样的情况对于大量数据交换的情况是无法容忍的。MTOM 就是针对SOAP 消息传输的基础上提出的改进办法。对于大量数据的传递,不会进行进行Base64编码,而是直接以附件的二进制原始数据的形式封装在SOAP消息的 MIME 部分,进行传输。SOAP 消息通过指向随其发送的 MIME 部分来引用二进制内容,另外包括SOAP基本的XML 数据,这些还是Base64编码。因为此模型与简单邮件协议SMTP 模型基本一致。 MTOM通过简化大量数据的编码过程,从而提高数据的处理效率。因为SOAP消息等必要的信息,MTOM 也有一些必要的开销。MTOM仅在二进制数据元素的大小超过大约 1 KB 时,才能体现出其优势。

MIME表示多用途Internet邮件扩允协议。MIME扩允了基本的面向文本的Internet邮件系统,以便可以在消息中包含二进制附件。 MIME(Multipurpose Internet Mail Extentions),一般译作"多用途的网络邮件扩充协议"。顾名思义,它可以传送多媒体文件。 MIME (Multipurpose Internet Mail Extensions,多目的Internet邮件扩展)是创建用于电子邮件交换,网络文档,及企业网和Internet上的其他应用程序中的文件格式的 规范。

6. 什么是JSR-181?

JSR181与JSR175介绍 我们先来看一段典型的使用JSR175特征的代码。 ```java package webservices.jsr181.pojo;

import javax.jws.WebMethod;
import javax.jws.WebService; @WebService(name="StringChangerPort", targetNamespace="http://wwtt.bea.com")
public class StringChanger { @WebMethod()
public String toUpper(String upperReqString)
{

这 个类的源代码和普通的JAVA代码没太多区别,但和普通JAVA代码不同的是这里面还包含了很多以@开头的代码,或者称为注释,也就是在Java 5中的新语法,JSR-175。JSR-175规范只是定义这种语法规则,而用这种语法来如何将这个类生成一个Web Service接口,则需要由JSR-181规范来决定。所以这些JSR-175的注释才真正决定了这个Web Service的行为和外观。

也许你会觉得这种语法比较奇怪,有些像普通java方法的语法,只是前面多了一个@。实际在JSR175规范的早期,该语法并不是像现在这样的。如果按早期写法,@WebService()会该写为:

事实上JSR 181是BEA提出的用于加速Web Services开发的一种基于注释驱动的编程模式,并被批准纳入到J2EE 1.5标准。JSR181提供了一种简单的Web Service开发编程模型和标准的编译及部署方式。只需要编写JSR-175风格的注释就可以制定WSDL,消息产生属性,安全认证方式,以及特定的消 息头。

7. 什么是 SAAJ?

SAAJ(SOAP with Attachments API for JAVA) SAAJ是在松散耦合软件系统中利用SOAP协议实现的基于XML消息传递的API规范。顾名思义,SAAJ支持带附件的SOAP消息。 SAAJ 1.2 API主要由javax.xml.soap包组成,它为带有多用途互连网邮件扩展协议(MIME)附件的SOAP消息提供抽象。该API提供了创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法。 选择SAAJ的理由是什么呢?SAAJ无疑很适合基于文档的同步或者异步Web Service。SAAJ使用简单,有助于您在Java环境中集成各种Web Service,它扩展了对文档风格的Web Service通信的自然支持(natural support)。SAAJ还支持基于标准接口上的XML消息传递,并且这一点得到了供应商的广泛支持。

WS-*协议栈及相关概念的更多相关文章

  1. Android开发学习总结——Android开发的一些相关概念

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  2. Android开发学习总结——Android开发的一些相关概念(转)

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  3. WebSocket和long poll、ajax轮询的区别,ws协议测试

    WebSocket和long poll.ajax轮询的区别,ws协议测试 WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连 ...

  4. 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念

    wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...

  5. 基于netty http协议栈的轻量级流程控制组件的实现

    今儿个是冬至,所谓“冬大过年”,公司也应景五点钟就放大伙儿回家吃饺子喝羊肉汤了,而我本着极高的职业素养依然坚持留在公司(实则因为没饺子吃没羊肉汤喝,只能呆公司吃食堂……).趁着这一个多小时的时间,想跟 ...

  6. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  7. The type javax.ws.rs.core.MediaType cannot be resolved. It is indirectly referenced from required .class files

    看到了http://stackoverflow.com/questions/5547162/eclipse-error-indirectly-referenced-from-required-clas ...

  8. IDDD 实现领域驱动设计-上下文映射图及其相关概念

    上一篇:<IDDD 实现领域驱动设计-理解限界上下文> 距离上一篇有几天时间了,<实现领域驱动设计>第三章的内容都是围绕一个词-上下文映射图,我大概断断续续看了几天,总共看了两 ...

  9. CANopen学习——协议栈

    协议,是双方都提前商量好的通讯约定. 例如:发送1代表灯亮,发送0代表灯灭. 但由于只是单bit的0和1在通信时,抗干扰太弱,且多种控制时不能区分,此时扩展一下协议. 例如:  头      地址   ...

  10. 【转】TCP/IP协议栈及OSI参考模型详解

    OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设 ...

随机推荐

  1. 2.安装VS Code

    1 打开网站 https://www.visualstudio.com/zh-hans/ 2. 安装 3.可以在程序目录命令行下 code .    用vscode 打开程序 4.下载插件 复制 ex ...

  2. PAT (Basic Level) Practise (中文)- 1006. 换个格式输出整数 (15)

    http://www.patest.cn/contests/pat-b-practise/1006 让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换 ...

  3. 微信小程序的开发——01小程序的执行流程是怎样的?

    作者:叶小钗 转载至:https://www.cnblogs.com/yexiaochai/p/9346043.html 我们这边最近一直在做基础服务,这一切都是为了完善技术体系,这里对于前端来说便是 ...

  4. JAVA JDBC 连接 Oracle

    使用 Junit 测试类编写 public class JdbcTest { private Connection con = null;// 创建一个数据库连接 private PreparedSt ...

  5. hibernate系列之二

    首先先介绍一下持久化: 持久化:将程序数据在持久状态和瞬时状态间转换的机制:即将内存的数据永久存在关系型数据库中: 持久化类的编写规则: 持久化类需要提供无参构造方法: 持久化类的属性需要私有,对私有 ...

  6. vim粘贴取消自动缩进

    Vim 复制粘贴探秘 Vim 作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几 十年,还没有完全掌握vi ...

  7. java util - 中文、繁体转成拼音工具pinyin4j

    需要 pinyin4j-2.5.0.jar 包 代码例子 package cn.java.pinyin4j; import net.sourceforge.pinyin4j.PinyinHelper; ...

  8. json数据格式及json格式化工具推荐

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据. 易于人阅读和编写,同时也易于机器解析和生成. XML也 ...

  9. Python编写一个程序求2的次方

    #!/usr/bin/env python3 #-*- coding:utf-8 -*- #":"冒号后面为对参数注释,"->"为对整个函数注释 def ...

  10. stm32的systick原理与应用

    /* SysTick滴答定时器 一.功能 SysTick定时器是一个简单的定时器,CM3\CM4内核芯片都具备此定时器.SysTick定时器常用来做延时,采用实时系统时则用来做系统时钟.无论用作延时还 ...