21.2. WS-RM Interceptors
概述
在 Apache CXF 中,WS-RM 功能实施为拦截器。Apache CXF 运行时使用拦截器来截获和处理被发送和接收的原始消息。当传输收到消息时,它会创建一个消息对象,并通过拦截器链发送该消息。如果应用的拦截器链包含 WS-RM 拦截器,则应用程序可以参与可靠的消息传递会话。WS-RM 拦截器处理消息块的集合和聚合。它们还处理所有确认和重新传输逻辑。
Apache CXF WS-RM Interceptors
Apache CXF WS-RM 实现由四个拦截器组成,这些拦截器在 表 21.1 “Apache CXF WS-ReliableMessaging Interceptors” 中进行了描述。
拦截器 | 描述 |
---|---|
| 处理为出站消息提供可靠性保证的逻辑方面。
负责发送 还负责聚合应用程序消息的序列属性-ID 和消息编号。 |
|
负责拦截和处理 RM 协议消息和 |
| 为持久性存储缓存传入的消息。 |
| 确保向应用程序发送信息。 |
| 负责编码和解码可靠性属性作为 SOAP 标头。 |
| 负责为将来的重新发送创建应用消息副本。 |
启用 WS-RM
在拦截器链中存在 WS-RM 拦截器可确保在需要时交换 WS-RM 协议消息。例如,当截获出站拦截器链上的第一个应用程序消息时,RMOutInterceptor
会发送 CreateSequence
请求并等待处理原始应用程序消息,直到它收到 CreateSequenceResponse
响应。此外,WS-RM 拦截器将序列标头添加到应用程序消息中,并在目标端从消息中提取它们。不需要对应用程序代码进行任何更改,从而使消息交换可靠。
有关如何启用 WS-RM 的更多信息,请参阅 第 21.3 节 “启用 WS-RM”。
配置 WS-RM 属性
通过配置,您可以控制序列解译和其他可靠的交换方面。例如,默认情况下,Apache CXF 会尝试最大化序列的生命周期,从而减少带 WS-RM 协议消息产生的开销。要强制在每个应用消息中使用单独的序列,请配置 WS-RM 源的序列终止策略(将最大序列号设置为 1)。
有关配置 WS-RM 行为的详情,请参考 第 21.5 节 “配置 WS-RM”。