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
					除了使用 SOAP 特定消息上下文外,SOAP 协议处理程序还需要实施名为 getHeaders () 的额外方法。这个附加方法返回标头的 QNames 会阻止处理器可以处理。
				
流程 复制链接链接已复制到粘贴板!
要实现逻辑手,请执行以下操作:
- 实施处理程序所需的任何 第 43.6 节 “初始化处理程序” 逻辑。
 - 实施 第 43.5 节 “处理 SOAP 处理程序中的消息” 逻辑。
 - 实施 第 43.7 节 “处理故障消息” 逻辑。
 - 
							实施 
getHeaders ()方法。 - 在完成时,实施 第 43.8 节 “关闭处理程序” 处理程序的逻辑。
 - 在销毁前,为 第 43.9 节 “释放处理程序” 处理程序的资源实施任何逻辑。
 
实现 getHeaders ()方法 复制链接链接已复制到粘贴板!
					 getHeaders () 显示在 例 43.9 “SOAPHander.getHeaders () 方法” 所示,方法告知 Apache CXF 运行时处理器负责处理的 SOAP 标头。它返回每个 SOAP 标头的 outer 元素的 QNames,处理程序会理解。
				
例 43.9. SOAPHander.getHeaders () 方法
						set<QName>getHeaders
					
					对于许多情况下,只需返回 null 就足够了。但是,如果应用程序使用任何 SOAP 标头的 mustUnderstand 属性,则务必要指定应用的 SOAP 处理程序理解的标头。运行时检查一组 SOAP 标头,所有已注册的处理程序都对 mustUnderstand 属性设置为 true 的标头列表理解。如果任何标记的标头不在理解标头列表中,则运行时会拒绝消息,并抛出 SOAP 必须理解异常。