簡體   English   中英

在CXF(JAX-RS)中覆蓋HTTP標頭

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM