将拦截器链添加到 JAX WS 提供程序

Adding Interceptorchains to JAX WS Provider

我知道我可以使用 @HandlerChain 将处理程序 (JAX WS) 添加到 SEI 我知道我可以像这样将拦截器(Apache CXF)添加到 SEI - http://web-gmazza.rhcloud.com/blog/entry/jaxwshandlers-to-cxfinterceptors

我知道我可以使用@HandlerChain 将处理程序添加到提供者接口- https://docs.oracle.com/middleware/1213/wls/WSGET/jax-ws-soaphandlers.htm#WSGET3461

问题是: 我可以,如果可以,如何(与 SEI 一样?)将拦截器添加到 Provider 接口?

好吧,我找到了这个具体问题的答案。你可以像这样添加拦截器

ProviderImpl implementor = new ProviderImpl();
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setAddress("http://localhost:9000/providerexample");
svrFactory.setServiceBean(implementor);
svrFactory.getInInterceptors().add(new LoggingInInterceptor());
svrFactory.getOutInterceptors().add(new LoggingOutInterceptor());
svrFactory.create();

但现在下一个问题:拦截器处理 SoapMessage(Apache CXF)。提供程序处理 SOAPMessage(JAXWS)。所以我可以让拦截器记录所有内容,但是当我尝试操作 SoapMessage 时,我遇到了麻烦。仍然不确定原因是这两个不兼容类(或者框架是否负责相互转换)或我在那里使用的特定代码。

编辑:拦截器没有问题,只是我犯了一些愚蠢的错误。