43.4. 实施协议处理程序


概述

协议处理程序特定于使用中的协议。Apache CXF 提供由 JAX-WS 指定的 SOAP 协议处理器。SOAP 协议处理程序实施 javax.xml.ws.handler.soap.SOAPHandler 接口。

SOAPHandler 接口(如 例 43.8 “SOAPHandler Synopsis” 所示)使用 SOAP 特定消息上下文,作为 SOAPMessage 对象提供消息的访问。它还可让您访问 SOAP 标头。

例 43.8. SOAPHandler Synopsis

public interface SOAPHandler extends Handler
{
  boolean handleMessage(SOAPMessageContext context);
  boolean handleFault(SOAPMessageContext context);
  void close(SOAPMessageContext context);
  Set<QName> getHeaders()
}

除了使用 SOAP 特定的消息上下文外,SOAP 协议处理程序还要求您实施名为 getHeaders () 的额外方法。这个额外的方法返回标头的 QNames,处理程序可以处理。

流程

要实现逻辑手,请执行以下操作:

  1. 实施处理程序所需的任何 第 43.6 节 “初始化处理程序” 逻辑。
  2. 实施 第 43.5 节 “在 SOAP 处理程序中处理消息” 逻辑。
  3. 实施 第 43.7 节 “处理容错消息” 逻辑。
  4. 实施 getHeaders () 方法。
  5. 在结束时为 第 43.8 节 “关闭处理程序” 实施处理程序的逻辑。
  6. 在销毁前,为 第 43.9 节 “发布处理程序” 处理程序的资源实施任何逻辑。

实现 getHeaders ()方法

getHeaders ()例 43.9 “The SOAPHander.getHeaders() Method” 中显示的,方法会通知 Apache CXF 运行时,SOAP 用来处理处理程序。它会返回每个 SOAP 的 outer 元素的 QNames,处理程序理解。

例 43.9. The SOAPHander.getHeaders() Method

Set<QName>getHeaders

对于很多情况,只需返回 null 即可。但是,如果应用程序使用任何 SOAP 标头的 mustUnderstand 属性,那么务必要指定应用程序 SOAP 处理程序所理解的标头。运行时会检查一组 SOAP 标头,所有注册的处理程序都知道所有已注册的处理程序对标头列表(且 mustUnderstand 属性设置为 true )的理解。如果任何标记的标头没有包括在所理解的标头列表中,则运行时会拒绝该消息并抛出一个 SOAP 必须理解异常。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.