[英]Overwrite HTTP Header in CXF (JAX-RS)
我想在從服務器向客戶端發送答復之前更改HTTP標頭“連接”的值。
我的用例:我有一個JAX-RS Web服務,位於負載均衡器后面。 Web Service客戶端通過“連接:保持活動”發送請求。 結果:連接保持打開狀態,負載均衡器不平衡 :-)
因此,我希望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
中將此類聲明為Provider。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.