我想更改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
中的提供商。