wsi:swaRef 与 SOAP
清单 2 显示了 WSDL 定义中的 wsi:swaRef。清单 3 显示了一个 SOAP 请求消息示例。它是清单2 中定义的服务的sendImage 操作的消息。在突出显示的部分,可以看到 image 的 wsi:swaRef 参数如何与实际图像数据的内容 ID 相关联。尽管与标准的带附件的 SOAP 消息不完全相同,但概念是相似的。
清单 3. 带 wsi:swaRef 数据的 SOAP 消息
——=_Part_0_1245231543.1147796620031
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <89884062647.1147796620016.IBM.WEBSERVICES@ISSW>
<soapenv:Envelope
>
<soapenv:Header/>
<soapenv:Body>
<p985:sendImage >
<image>cid:image=881207433652.1147796619984.IBM.WEBSERVICES@ISSW</image>
</p985:sendImage>
</soapenv:Body>
</soapenv:Envelope>
——=_Part_0_1245231543.1147796620031
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
Content-Id: <image=881207433652.1147796619984.IBM.WEBSERVICES@ISSW>
… binary image data …
wsi:swaRef 与 Java
您已经了解了 wsi:swaRef 的声明,而且还看到了 SOAP 消息中的 wsi:swaRef 实例。最后要考虑的是 wsi:swaRef 如何映射到编程语言。由于我是一个 Java 迷,因此将在此讨论 Java 映射。
JAX-RPC 1.1 版最终确定之后,WS-I才定义了 wsi:swaRef,因此 JAX-RPC 没有为我们提供映射。不过,它还是给了我们一点提示。它规定,未知的 MIME 类型将映射到 javax.activation.DataHandler。由于 wsi:swaRef 的确是一个未知的 MIME 类型,因此它也会映射到 javax.activation.DataHandler,这似乎是理所当然的。如果我们注意一下新动向,就会发现新的JAX-B 2.0 规范事实上已经采纳了这种映射方式。因此,完全可以假定任何支持 wsi:swaRef 的实现都会将其映射到 javax.activation.DataHandler。清单 4 显示了清单 2 中的 WSDL 的 Java 接口。
清单 4. wsi:swaRef 的 Java 映射
public interface AttachmentTip extends java.rmi.Remote {
public void sendImage(javax.activation.DataHandler image)
throws java.rmi.RemoteException;
public void sendOctet(javax.activation.DataHandler octet)
throws java.rmi.RemoteException;
}
结束语
WSDL 的附件定义存在一些问题,因此 WS-I 组织创建了新的附件类型 wsi:swaRef。此类型将采用与标准的 WSDL 附件类似的方式映射到 SOAP 消息中;此类型还将作为未知 MIME 类型映射到 Java 中,即 javax.activation.DataHandler。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
API设计如龙生九子 各不相同
IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。
-
API设计:如何正确开发应用程序接口
在交互组件化软件的世界里,没有比让组件之间以及组件与移动设备和浏览器之间进行连接的应用程序接口(API)更重要的东西了。
-
从头开始实现领域驱动设计
领域描述业务;它是驱动企业的概念和逻辑的集合。如果遵循领域驱动设计(DDD)这一本质,那么领域就是应用程序中最重要的组成部分。