CXF客户端代理如何处理客户端内的某些响应代码

时间:2014-11-21 17:49:27

标签: java web-services proxy cxf

当我使用代理客户端发送请求时,如果我收到某个响应,我希望能够修改请求,然后再次针对所有请求发送相同的请求。

通常我会这样做:

BookStore proxy = JAXRSClientFactory.create("http://books", BookStore.class);
try 
{
    proxy.getBook("someId");
} 
catch(WebApplicationException ex) 
{
    Response r = ex.getResponse();
    if (r.getStatusCode() == 404)
    {
       proxy.getBook("anotherId");
    }
}

但是在这种情况下,我想对所有请求做一些常见的事情:如果我得到一个特定的http代码,修改一些标题值,然后再试一次(可能会限制重试次数)。

我还没有看到cxf代理客户端明确支持这种方式,我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

您需要编写一个拦截器来为每个请求执行此操作。 在这里,您可以获得示例代码和文档http://cxf.apache.org/docs/jax-rs-filters.html