CXF(JAX-RS)中的HTTP标头覆盖



我想更改http标头"连接"的值,然后再将答复从服务器发送到客户端。

我的用例:我有一个位于负载平衡器后面的JAX-RS Web服务。Web Service客户端发送带有" Connection:keep-alive"的请求。结果:连接保持打开状态,负载平衡器不 balance : - (

因此,我希望我的Web服务每百达几百个请求,并用"连接:关闭"来迫使客户打开新连接。

我该如何使用CXF?

您可以使用ContainerResponseFilter将所需的标头添加到发送的响应中。

一个例子:

import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.Provider;
@Provider
public class ResponseFilter implements ContainerResponseFilter {
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
            throws IOException {
        MultivaluedMap<String, Object> headers = responseContext.getHeaders();
        headers.putSingle("Connection", "close");
    }
}

将此类声明为javax.ws.rs.core.Application中的提供商。

最新更新