Web Service 消息的 SDO 数据图映射

Web Service 消息的结构由 Web Service 消息的服务数据对象 (SDO) V1 数据图描述。

Web Service 消息的整体布局

Web Service 消息由一个格式字符串和三个元数据字段(operationName、messageName 和 messageType)描述。消息的有效内容分为另外三个部分:头、附件和主体。

Info 节点是所有 Web Service 消息的 SDO 数据图的最高级别。下表描述 Info 节点属性及关联类型。

属性名 属性类型 属性描述
operationName java.lang.String 标识与消息相关联的 WSDL 操作。如果数据访问服务不能标识该消息,那么此字段为空。请参阅标识 Web Service 消息
messageName java.lang.String 标识与消息相关联的 WSDL 消息。如果数据访问服务不能标识该消息,那么此字段为空。请参阅标识 Web Service 消息
messageType java.lang.String 标识消息实例的 Web Service 类型。此字段可具有以下值:inputoutputfaultambiguous。如果数据访问服务不能标识该消息,那么此字段为空。请参阅标识 Web Service 消息
数据对象的 java.util.List 包含头条目数据对象的列表。消息中的每个 SOAP 头都对应于该列表中的一条头条目。请参阅消息头布局
连接 数据对象的 java.util.List 包含附件条目数据对象的列表。对于带有附件的 SOAP 消息,消息中的每个 MIME 部分(除包含 SOAP 包络的 MIME 部分)都被映射至该列表中的一个条目。请参阅消息附件布局
body commonj.sdo.DataObject 嵌套的数据对象,它表示 SOAP 包络的主体。请参阅消息体布局

标识 Web Service 消息

消息处理取决于这些消息是否具有 WSDL 定义。在不使用 WSDL 的情况下进行处理所需的最小信息量是“SOAP:”。在使用 WSDL 的情况下进行处理所需的最小信息量是“SOAP:location,namespace,service,port”。如果该格式字符串不包括所有这 5 个字段,那么 SOAP 数据访问服务将尝试在不使用 WSDL 的情况下处理该消息。

  • 在不使用 WSDL 定义的情况下处理消息:如果格式字符串未包含完整的 WSDL 信息,那么 SOAP 数据访问服务将处理该消息,而不会尝试根据 WSDL 中的定义对该消息进行匹配。结果,operationName 和 messageName 被设置为 null,仅当处理故障消息时才设置 messageType。
  • 在使用 WSDL 定义的情况下处理消息:如果格式字符串包含 <WSDL location>、<Service namespace>、<Service name> 和 <Port name>,那么 SOAP 和 Bean 数据访问服务将使用该服务的 WSDL 定义来处理该消息。
    注: 在下列任意一种情况下,向 SOAP 消息处理提供所有的必需 WSDL 信息后,该处理将失败:
    • SOAP 数据访问服务找不到 WSDL
    • WSDL 未能确认该消息

当 SOAP 数据访问服务处理 SOAP 请求或应答消息时,它会尝试使消息与 WSDL 中的消息定义匹配。通常存在一个匹配定义并且会适当地填充 operationName、messageName 和 messageType。如果存在多个匹配定义,那么数据访问服务会选择一个消息定义并填充 operationName 和 messageName,并将 messageType 设置为 ambiguous

在处理故障消息时,标识稍微有所不同。在所有情况下,messageType 都将被设置为 fault。如果消息与 WSDL 中的唯一故障定义匹配,那么也将设置 operationName 属性和 messageName 属性。

消息头布局

头的列表可有两种类型的条目:头条目或绑定头条目,这取决于该头是否基于消息的部分。

头条目类型用于处理符合下列任一条件的头:
  • 头是 WSDL 中建模的消息的部分
  • 头是未在 WSDL 中建模的消息的部分,此部分基于该消息的某个部分
对于此头的模型,请参阅头条目

当用于消息的 SOAP 绑定已将主体部分绑定至 MIME 附件时使用绑定头条目类型。(当您使用 <MIME:content> 元素来将消息部分绑定至附件时会出现该情况。)为了获得一致的调解编程,所有主体数据都存储在图中的主体节点中。与正常附件条目不同,绑定附件条目将放到附件列表中。绑定附件条目包含用于附件的 MIME 元数据,还包含消息部分的名称,该消息部分包含来自该附件的数据。这样就使用来处理附件的调解可在数据图的主体部分中找到数据。有关该附件的模型,请参阅绑定的头条目

头条目

属性名 属性类型 属性描述
mustUnderstand java.lang.Boolean 带有来自 SOAP 头上的 mustUnderstand 属性的值,如果使用该属性。
actor java.lang.String 带有来自 SOAP 头上的 actor 属性的值,如果使用该属性。
any commonj.sdo.Sequence SOAP 头的内容的容器

绑定的头条目

属性名 属性类型 属性描述
mustUnderstand java.lang.Boolean 带有来自 SOAP 头上的 mustUnderstand 属性的值,如果使用该属性。
actor java.lang.String 带有来自 SOAP 头上的 actor 属性的值,如果使用该属性。
messagePart java.lang.String 包含消息部分的名称,该名称带有来自该消息头的数据。

消息附件布局

消息附件的处理方式与头的处理方式类似,并且它们的实例填充 Info 节点中的附件列表。

有两种类型的附件条目可用来处理 MIME 附件:附件条目和绑定附件条目。

附件条目用于通用附件:请参阅附件条目

绑定附件条目包括将主体部分绑定至 MIME 附件的 <MIME:content> 元素。如果您正在对调解进行编程,那么需要了解在图中找到数据的方法。为了获得一致的调解编程效果,附件数据放在消息体中,根据包括其他 MIME 元数据的头条目中的部分名来引用。有关该附件的模型,请参阅绑定的附件条目

附件条目

属性名 属性类型 属性描述
contentType java.lang.String 带有来自由附件条目表示的 mime 部分的 contentType。
contentTransferEncoding java.lang.String 带有来自由附件条目表示的 mime 部分的 contentTransferEncoding。
contentId java.lang.String 带有来自由附件条目表示的 mime 部分的 contentId。
data byte[] 带有作为字节数组的 MIME 元素的内容。

绑定的附件条目

属性名 属性类型 属性描述
contentType java.lang.String 带有来自由附件条目表示的 mime 部分的 contentType。
contentTransferEncoding java.lang.String 带有来自由附件条目表示的 mime 部分的 contentTransferEncoding。
contentId java.lang.String 带有来自由附件条目表示的 mime 部分的 contentId。
messagePart java.lang.String 包含消息部分的名称,该名称带有来自该附件的数据。

消息体布局

主体中数据对象的布局由服务 WSDL 定义。数据对象的类型源自 WSDL 中的消息定义。对于消息定义中的每部分,数据对象都将有一个属性。每个消息部分的布局都符合将 XML 模式映射至 SDO 的约定。请参阅 Web Service 代码示例,以了解更多信息。

Web Service 故障消息

对于故障消息,图的 Info 节点中的 messageType 字段设置为“fault”,并且消息体将具有下列属性:

属性名 属性类型 属性描述
faultcode javax.xml.namespace.QName 包含 SOAP 故障元素中的 faultcode 值
faultstring java.lang.String 包含 SOAP 故障元素中的 faultstring 值
faultactor java.lang.String 包含 SOAP 故障元素中的 faultactor 值
detail commonj.sdo.DataObject 在 SOAP 故障元素的 detail 子代中包含该内容
注: detail 元素定义使用元素和属性通配符,所以 detail 数据对象的内容将包含 Sequence。请参阅 Web Service 代码示例,以了解更多信息。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjy1111
文件名:rjy1111.html