使JAX RS CXF拦截器与WebClient一起使用

时间:2013-02-28 19:41:52

标签: cxf jax-rs webclient interceptor

使用WebClient类(org.apache.cxf.jaxrs.client.WebClient)时,我遇到了拦截器触发的问题。在我调用RESTful服务的方法中,我添加了一个拦截器以在out阶段执行。我故意提供了无效的属性,所以我可以看到拦截器失败,但该方法成功完成。

以下是我正在使用的代码:

private String callService2(String webServiceUrl) {

    JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
    bean.setAddress(webServiceUrl);

    // setup properties
    Map<String, Object> properties = new HashMap<String, Object>();

    properties.put("ws-security.signature.username", "client");
    properties.put("ws-security.signature.properties", 
                   "client_nonexistantfile.properties");

    bean.setProperties(properties);

    XmlSigOutInterceptor sigInterceptor = new XmlSigOutInterceptor();
    bean.getOutInterceptors().add(sigInterceptor);

    // use WebClient (or proxy) as usual
    WebClient wc = bean.createWebClient();
    TestInfoResponse response = wc.accept("application/xml").get(TestInfoResponse.class);
    return response.getContents();
}

我希望XmlSigOutInterceptor逻辑失败,因为属性文件不存在,但方法成功完成。添加XmlSigOutInterceptor时我做错了什么。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是我的坏事。执行get时,XmlSigOutInterceptor不需要执行任何操作,因为没有要签名的文档。因此拦截器正在开火,它刚刚立即返回。

对不起噪音。