第 59 章 配置端点以使用拦截器

摘要

在消息交换中包含时,拦截器会添加到端点中。端点的拦截器链由 Apache CXF 运行时中的多个组件的拦截器链构建。拦截器在端点的配置或其中一个运行时组件配置中指定。可以使用配置文件或拦截器 API 添加拦截器。

59.1. 确定附加拦截器的位置

概述

托管拦截器链的多个运行时对象。它们是:

  • endpoint 对象
  • service 对象
  • 代理对象
  • 用于创建端点或代理的 factory 对象
  • 绑定
  • 中央 总线 对象

开发人员可以将自己的拦截器附加到任何这些对象。要附加拦截器的最常用对象是总线和单个端点。选择正确的对象时,需要了解这些运行时对象是如何组合来使端点。根据设计,每个 cxf 相关捆绑包都有自己的 cxf 总线。因此,如果在总线中配置了拦截器,且同一 blueprint 上下文的服务被导入或被创建到另一个捆绑包中,则拦截器不会被处理。相反,您可以将拦截器直接配置为导入的服务中的 JAXWS 客户端或端点。

端点和代理

将拦截器附加到端点或代理是放置拦截器的最精细方法。任何直接连接到端点的拦截器,或代理只能影响特定的端点或代理。这是附加特定于服务特定警告的拦截器的良好情况。例如,如果某个开发人员想要公开一个服务实例,它将指标的单元转换为不误地可以将拦截器直接附加到一个端点。

因素

使用 Spring 配置将拦截器附加到用于创建端点的工厂中,或者代理具有与将拦截器直接附加到端点或代理时的影响。但是,当拦截器被附加到工厂时,附加到工厂的拦截器会传播到由工厂创建的每个端点或代理。

绑定

将拦截器附加到绑定可让开发人员指定一组应用于使用绑定的所有端点的拦截器。例如,如果开发人员希望强制所有使用原始 XML 绑定的端点都包含特殊的 ID 元素,他们可以将这个拦截器附加到 XML 绑定中。

总线

附加拦截器的最常规位置是总线。当拦截器附加到总线时,拦截器会传播到由该总线管理的所有端点。在创建多个端点的应用程序中,将拦截器附加到总线会很有用,后者共享一组类似的拦截器。

组合附加点

因为端点的最终拦截器链是由列出的对象贡献的拦截器链的修改,所以列出的几个对象可以在单一端点配置中合并。例如,如果应用程序生成的多个端点都需要检查验证令牌的拦截器,则该拦截器会附加到应用程序的总线中。如果其中一个端点还需要将 Euros 转换为收号,转换拦截器会直接附加到特定的端点。