第 59 章 配置端点以使用拦截器
摘要
当消息交换中包含拦截器时,拦截器会添加到端点中。端点的拦截器链由 Apache CXF 运行时中的多个组件的拦截器链组成。拦截器在端点的配置或其中一个运行时组件的配置中指定。可以使用配置文件或拦截器 API 添加拦截器。
59.1. 决定附加拦截器的位置
概述
主机拦截器链有很多运行时对象。它们是:
- 端点对象
- service 对象
- proxy 对象
- 用于创建端点或代理的 factory 对象
- 绑定
-
中央
总线
对象
开发人员可以将自己的拦截器附加到这些对象。附加拦截器的最常见对象是总线和单个端点。选择正确的对象需要了解如何组合这些运行时对象来创建端点。根据设计,每个 cxf 相关捆绑包都有自己的 cxf 总线。因此,如果在总线中配置拦截器,并且同一 Blueprint 上下文上的服务被导入或创建到另一个捆绑包中,则不会处理拦截器。相反,您可以将拦截器直接配置为导入的服务中的 JAXWS 客户端或端点。
端点和代理
将拦截器附加到端点或代理是放置拦截器的最精细的方法。任何直接附加到端点或代理的拦截器都只影响特定的端点或代理。这是附加特定于服务特定影响的拦截器的好位置。例如,如果开发人员希望公开一个服务实例,该服务将单位从指标转换为 imperial,他们可以直接将拦截器附加到一个端点。
因素
使用 Spring 配置将拦截器附加到用于创建端点或代理的工厂中,与将拦截器直接附加到端点或代理可以正常工作。但是,当拦截器以编程方式附加到工厂时,会传播到工厂创建的每个端点或代理。
绑定
将拦截器附加到绑定可让开发人员指定一组应用到使用该绑定的所有端点的拦截器。例如,如果开发人员希望强制所有使用原始 XML 绑定的端点包含特殊的 ID 元素,他们可以附加负责将元素添加到 XML 绑定中的拦截器。
总线
附加拦截器的最常见位置是总线。当拦截器附加到总线时,拦截器会被传播到该总线管理的所有端点。在创建共享一组类似拦截器的多个端点的应用程序中,将拦截器附加到总线非常有用。
合并附加点
因为端点的最终拦截器链集合是列出的对象贡献的拦截器链,所以列出的对象可以在单一端点配置中合并。例如,如果应用生成多个端点,它们都需要检查验证令牌来检查该拦截器,则拦截器将附加到应用的总线。如果其中一个端点还需要一个拦截器,该拦截器将 Standards 转换为美元,则转换拦截器将直接附加到特定的端点。