教程:如何为CICS编写SOAP消息头处理程序

日期: 2009-12-20 作者:Robert Crawford翻译:黄永兵 来源:TechTarget中国 英文

在某些情况下,你可能需要自己动手编写简单对象访问协议(Simple Object Access Protocol,SOAP)消息头处理程序,在这篇教程中,我使用一个安全header block介绍如何编写SOAP消息处理程序。   管道   首先你必须修改管道的eXtensible标记语言(XML)配置文件,以便让CICS调用消息头。下面列出了CICS的样例Web服务提供者管道,及几处突出显示的改动内容。  图1 CICS的样例Web服务提供者管道   消息头处理程序定义开头的标记信号后跟着的是程序名,再后面的命名空间定义告诉CICS消息头块的类型(绿色部分),看到输入消息的例子后你……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在某些情况下,你可能需要自己动手编写简单对象访问协议(Simple Object Access Protocol,SOAP)消息头处理程序,在这篇教程中,我使用一个安全header block介绍如何编写SOAP消息处理程序。

  管道

  首先你必须修改管道的eXtensible标记语言(XML)配置文件,以便让CICS调用消息头。下面列出了CICS的样例Web服务提供者管道,及几处突出显示的改动内容。
 
为CICS编写SOAP消息头处理程序

图1 CICS的样例Web服务提供者管道

  消息头处理程序定义开头的标记信号后跟着的是程序名,再后面的命名空间定义告诉CICS消息头块的类型(绿色部分),看到输入消息的例子后你会感觉更直观一点。

  当CICS调用处理程序时使用标记控制,如果入站消息包含一个“Security”消息头块,标记信号通过值“False”或“0”告诉CICS调用处理程序,如果标记被设为“True”或“1”,CICS将调用消息处理程序处理所有的传入请求,该标记终止了消息头处理程序SECHEADR的定义,其它处理程序可采取进一步行动,直到遇到标记结束。

  SOAP请求消息头示例

  消息处理程序有一组访问入站消息的选项,容器DFHRESPONSE容纳整个消息,DFHHEADER包括CICS调用的消息头处理程序相关的消息头块。

  下面是一个Security消息头块示例,我省略了命名空间URL以节约空间。
 
为CICS编写SOAP消息头处理程序

图2 Security消息头块示例

  这就是我们通常感到比较困难的部分,正如你从上面的例子中看到的,XML已经够冗长了,但SOAP更加冗长,在不同的平台之间,通过包括自定义字段的基于文本的消息可以很好地传递信息,但这正是大型机的弱点之一 —— 字符串处理,在装配器中处理长消息是相对快速和廉价的方案,但难度也较大,其它语言,如PL/1,能熟练地解析文本,但在这些高级语言中都存在性能损失。好消息是IBM可能会引入一个特殊的XML解析引擎,我们只需要等待CICS支持它。

  可能你已经注意到,每个SOAP标记都是以小于符号(“<”)开头的,后面跟着一个标记,再后面就是构成“名称-值”(name-value)对的属性,标记以大于符号(“>”)结束。紧接着开始标记的是标记描述内容,内容最后是以“</”符号结束的。

  SOAP结构是具有层次的,标记是相互嵌套的,实际上,有些标记只能嵌入到其它标记中才有效。

  处理任何消息头时不要太过于具体,也不要太过于模糊,查找太过具体的字符串,或者更坏的情况,假设是一个给定的值,只要环境一发生变化,就总会出现一定的偏移量,并可能破坏消息头处理程序。另一方面,太过模糊的搜索可能错过或误解部分消息,这种处理方法产生的错误是很难调试的。

  在上面的例子中,我突出显示了几个字符串,其中第一个突出显示的是放入DFHHEADER容器中的消息,注意字符串“Security”匹配管道配置文件中的localname属性。

  继续往下走,我突出显示了User ID和Password,不要受短标记属性蒙蔽,实际上我省略了三个很长的URL,主要是想通过这个例子解释如何处理凭证,,方便你找到关键信息。

  为用户凭证处理消息头

  1. 首先查找……,因为属性可能是存在的;
  2. 扫描……,找出用户ID元素的开头位置,在这个例子中,包括标记结束时的大于号,因为如果没有它,扫描可能停在";
  3. 查找……,找出用户ID元素的结束位置,有了内容的起止位置,我才可以计算出用户ID的长度,最后复制到工作的存储器中;
  4. 接下来,查找……,因为属性包括在标记中;
  5. 跳过所有属性,在密码开始和结束位置查找“>”;
  6. 在开始标记的结尾查找"。

  这里只显示了要经过哪些操作,当你成为一个系统程序员时,你就会喜欢上SOAP的松散耦合特性。

作者

Robert Crawford
Robert Crawford

数据中心专家

相关推荐

  • 使用CICS TRANSFORM命令实现XML至数据结构转换

    IBM似乎在几年前Web service助手发布后便提到了XML助手的相关信息。实际上工具的基本功能便是从XML表或语言结构用创建用于CICS转换所需的元文件。

  • 利用WSS标准确保CICS安全性

    万维网最好的地方在于它的匿名开放性,允许浏览器客户端访问世界范围远程服务器。然而,在二十世纪九十年代,恰恰是由于网络的开放性威胁到了商业的安全性。