速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

SOAP 基于 Java 消息服务

  • 2009-06-23
  • 本文字数:1688 字

    阅读完需:约 6 分钟

W3C 刚刚发布了推荐候选 SOAP 基于 Java 消息服务 1.0 详细描述了 SOAP(SOAP 1.1 和 SOAP 1.2) 应当如何绑定到一个支持 Java 消息服务 (JMS) 的消息系统。这一推荐的主要目的是:

…是在于保证不同的 Web 服务供应商实现之间互操作性。同时还应当支持消息者实现他们自己的 Web 服务来作为其基础设施的一部分,并让它们与供应商提供的 Web 服务进行互操作。

这一规范由两个主要部分组成:SOAP/JMS 底层协议绑定 - 规范一致实现所要求的 - 以及 WSDL(1.1 和 2.0) 用于 SOAP/JMS 绑定 - 规范一致实现的可选项。

SOAP 底层传输绑定定义了使用 Java 消息服务发送和接收 SOAP 消息的规则。SOAP/JMS 底层协议绑定包括了哪些 JMS 特性 / 属性在 SOAP 格式层次是“可见的”以及需要哪些 JMS 调用来支持它们;消息内容,包括属性和报头,比如优先级,soapAction,targetService 等等,是如何被处理的;以及 JMS 服务的连接细节。

这一规范将连接到服务目的点一般化了,使用 soapjms:lookupVariant,详细描述了用于查找指定目的名称的技术。该规范所要求的唯一一个 lookupVariant 是基于 JNDI 的 -jms-variat:jndi。其余的连接属性 -soapjms:destinationName,soapjms:jndiConnectionFactoryName,soapjms:jndiInitialContextFactory,soapjms:jndiURL 以及 soapjms:jndiContextParameterType- 都是为基于 JNDI 的 lookupVariant 作支持的。对于非 JNDI 的查找,作出合适的映射就要取决于其实现者了。

该规范同时还引入了一个 SOAP 参数集合,允许将 JMS 特定的消息报头暴露出来。这包括了 soapjms:deliveryMode,soapjms:timeToLive,soapjms:priority,soapjms:replyToName 以及 soapjms:topicReplyToName。最后两个看似完全不合时宜,因为它们是属于 WS-Addressing,而不属于 SOAP 基本定义。

额外的灵活性来自于对 SOAP 特定的 JMS 消息属性的定义:

  • soapjms:targetService - 可以被一个目标实现用于分发服务请求。这可以支持在单个队列上复用多个服务访问。
  • soapjms:bindingVersion - 被用于指示 SOAP 绑定所使用的版本。
  • soapjms:contentType - 允许指明主要消息负载的 MIME 类型。同时它还认定了该消息负载是使用 SOAP1.1,SOAP1.2,SOAP 带附件消息,还是 MTOM 来作为其主要的负载。
  • soapjms:soapAction - 它的使用跟 SOAP/HTTP 中的使用一模一样。
  • soapjms:isFault - 被用于指明一个消息是错误消息。
  • soapjms:requestURI - 用于指明服务的 JMS URI。该规范将这一 URI 定义为一个带有查询参数的 JMS 目的地 URI,表示目的地与参数属性。

该规范同时还讨论了 JMS 消息类型,安全考虑以及消息交换模式。

该规范的第二部分描述了 WSDL 将如何被用来指明使用以及控制 JMS 绑定的操作。

就 WSDL1.1 来说,该规范定义了如下的扩展:

  • wsdl11soap11:binding 元素的传输属性获取一个反应了 JMS 传输的新 URL。
  • 允许使用 SOAPAction 报头,尽管它是 WSDL 规范显式禁止的。
  • 定义了如何设置各种属性来控制绑定的行为 (连接参数,运行时设定)。
  • 使用 JMS URI 来定位服务。

就 WSDL2.0 来说,有如下的扩展:

  • 绑定元素的 wsoap:protocol 属性获取一个反映 JMS 传输的新的 URL。
  • 定义了如何设置各种属性来控制绑定的行为 (连接参数,运行时设定)。
  • 使用 JMS URI 来定位服务。

尽管 SOAP 基于 HTTP 允许可操作的消息实现,在很多需要达到零宕机时间和零数据丢失的任务关键系统里,消息是一个更合适的底层传输支撑。因此,许多 Web 服务实现,不管是在 Java 领域还是.NET 领域,都提供了私有的基于消息的 SOAP 支持。从这个角度来看,一个 SOAP 绑定消息的规范已经缺失太久了。

另一方面,这一将 SOAP 映射到 JMS 的规范看上去却并没有为其目标提供一个解决方案“…是在于保证不同的 Web 服务供应商实现之间互操作性”。首先,它将 SOAP 绑定到 JMS,仅此一项就排除了.NET 和 / 或大型机实现。同时,它将 SOAP 拴在了 JNDI 上,这就算在单个企业里都有可能造成互操作性的问题 - 典型的是多个不同的应用服务器集群会有它们自己的 JNDI。最后,除非使用了 高级消息队列协议 (AMQP),否则不同供应商的消息实现之间不会有线上的互操作性。

查看英文原文: SOAP Over Java Messaging Service

2009-06-23 07:573438
用户头像

发布了 133 篇内容, 共 37.3 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

模块5作业

Asha

聊聊SAAS

Im胡子

SaaS

架构实战-模块五

唐敏

「架构实战营」

在线火星文转换器工具

入门小站

工具

自定义规则删除过期文件(linux)

liuzhen007

28天写作 12月日更

数据也需要滴血认亲?

Justin

大数据 数据治理 28天写作

TypeScript 之常见类型(下)

冴羽

JavaScript typescript 翻译 大前端

Rust 元宇宙 12 —— 序列化和存储

Miracle

rust 元宇宙

模块五作业

侠客行

架构实战营 「架构实战营」

架构实战营 - 模块5 - 作业

lucian

架构实战营

Dubbo-Admin 正式支持 3.0 服务治理

阿里巴巴中间件

阿里云 云原生 dubbo 中间件 服务治理

趣谈“分布式链路追踪“组件发展史

悟空聊架构

分布式 链路追踪 28天写作 悟空聊架构 12月日更

微博评论的高性能高可用架构设计

zjluoyue

架构实战营第五课作业微博评论高性能高可用架构

Geek_99eefd

架构实战营 「架构实战营」

模块五作业

小鹿

ASP.NET Core中三个egg疼的路由函数

喵叔

28天写作 12月日更

前端架构师神技,三招统一代码风格

杨成功

大前端 架构师 代码规范 代码格式化 签约计划第二季

记录:一个从0-1打磨演讲的技术专家

将军-技术演讲力教练

模块五作业

panxiaochun

架构实战营

架构训练营 - 模块五作业

VegetableBird

架构实战营 架构师实战营 「架构实战营」

基于云的技术架构设计实践-第1篇

hackstoic

云计算 容器 云原生 CI/CD 签约计划第二季

如何掌握智识?

卢卡多多

28天写作 12月日更

如何构建“深入浅出,喜闻乐见”的界面

Ian哥

28天写作 沟通界面 深入浅出 喜闻乐见

1.《重学JAVA》开篇

杨鹏Geek

Java Java 25 周年 28天写作 12月日更

还在担心流量防护问题?Sentinel来帮你!

XiaoLin_Java

SpringCloud Alibaba 流量防控 签约计划第二季

模块五作业

心怀架构

微博系统中”微博评论“的高性能高可用计算架构设计

stars

架构训练营

x

Nydia

linux之cp强制复制文件

入门小站

Linux

互联网公司如何塑造一支有创业精神的技术团队?

阿里巴巴中间件

创业 阿里云 中间件

微博系统中”微博评论“的高性能高可用计算架构

Geek_cb2b43

SOAP基于Java消息服务_SOA_Boris Lublinsky_InfoQ精选文章