43.4. 实施协议处理程序


概述

协议处理程序特定于使用中的协议。Apache CXF 提供由 JAX-WS 指定的 SOAP 协议处理程序。SOAP 协议处理程序实施 javax.xml.ws.handler.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() 的其他方法。这个附加方法返回处理器可以处理的标头块的 QName。

流程

要实现逻辑手:

  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.