43.4. 实施协议处理程序


概述

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

例 43.8 “SOAPHandler Synopsis” 中显示的 SOAPHandler 接口使用 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 “SOAPHander.getHeaders () 方法” 所示,方法告知 Apache CXF 运行时处理器负责处理的 SOAP 标头。它返回每个 SOAP 标头的 outer 元素的 QNames,处理程序会理解。

例 43.9. SOAPHander.getHeaders () 方法

set<QName&gt;getHeaders

对于许多情况下,只需返回 null 就足够了。但是,如果应用程序使用任何 SOAP 标头的 mustUnderstand 属性,则务必要指定应用的 SOAP 处理程序理解的标头。运行时检查一组 SOAP 标头,所有已注册的处理程序都对 mustUnderstand 属性设置为 true 的标头列表理解。如果任何标记的标头不在理解标头列表中,则运行时会拒绝消息,并抛出 SOAP 必须理解异常。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.