0
点赞
收藏
分享

微信扫一扫

第三十七章 添加和使用自定义标题元素 - 自定义标头的继承

Java架构领域 2024-06-24 阅读 8
java

文章目录

第三十七章 添加和使用自定义标题元素 - 自定义标头的继承

自定义标头的继承

如果创建此Web 服务的子类,该子类将继承不特定于方法的标头信息 — 包含在 <request><response> 元素中的标头信息,这些元素是 <parameters>. 的直接子元素。即使 SOAPMETHODINHERITANCE0,情况也是如此。

示例

另一个示例如下:

XData service
{
<parameters xmlns="https://www.intersystems.com/configuration">
  <response>
    <header name="Header2" class="User.Header4" alias="Header4"/>
    <header name="Header3" class="User.Header3"/>
  </response>
  <method name="echoBase64">
    <request>
      <header name="Header2" class="User.Header4" alias="Header4"/>
      <Action>https://soapinterop.org/Round2Base.Service.echoBase64Request</Action>
    </request>
    <response>
      <header name="Header2" class="User.Header2" alias="Header2"/>
      <header name="IposTransportHeader" class="ipos.IposTransportHeader"/>
      <Action>https://soapinterop.org/Round2Base.Service.echoBase64Result</Action>
    </response>
  </method>
  <method name="echoString">
    <request>
      <Action>https://soapinterop.org/Round2Base.Service.echoStringRequest</Action>
    </request>
    <response>
      <Action>https://soapinterop.org/Round2Base.Service.echoStringAnswer</Action>
    </response>
  </method>
</parameters>
}

SOAPHEADERS 参数中指定支持的标头元素

指定支持的标头元素的旧方法是在 Web 服务或 Web 客户端类中包含 SOAPHEADERS 参数。

此参数必须等于以逗号分隔的标头规范列表。每个标头规范均具有以下格式:

headerName:headerPackage.headerClass

其中 headerName 是受支持标头的元素名称,headerPackage.headerClass 是代表该标头的类的完整包和类名称。例如:

Parameter SOAPHEADERS = "MyHeaderElement:Scenario1Client.MyHeaderElement" 

此列表标识了对此 Web 服务或客户端的 SOAP 请求中支持的所有标头,并指明了每个标头映射到的类。

如果使用此较旧的技术,请注意以下几点:

  • 对于 Web 服务,此技术不会影响生成的 WSDL
  • 无法为特定的 Web 方法指定不同的标头元素。
  • SOAP 向导不再在生成的 Web 服务和客户端类中生成 SOAPHEADERS 参数。
  • 此技术已被弃用。

自定义标头的继承

如果创建此 Web 服务的子类,则该子类将继承 SOAPHEADERS 参数。即使 SOAPMETHODINHERITANCE0,情况也是如此。

对于每个受支持的标头元素,服务或客户端都会创建相应标头类的实例,并将标头添加到入站标头数组,即 HeadersIn 属性。此属性是一个具有常用数组接口的数组(例如,SetAt()Count()GetAt() 方法)。然后,Web 服务或 Web 客户端可以根据需要对这些标头采取行动。

注意:header 元素命名空间不用于匹配列表中的 header 元素。但是,SOAP 消息中的 header 元素命名空间必须与 header 元素子类中的 NAMESPACE 参数指定的命名空间相同;否则,导入消息时会出现错误。

举报

相关推荐

0 条评论