我可以在最終響應中設置自定義標題。我通過在CXFEndpoint中添加outInterceptor來完成。我已添加AbstractPhaseInterceptor。首先,我必須在駱駝路線中設置CamelExchange中的標題。我通過從CamelExchange中讀取它,將其設置爲#CXFRestfulBindings.populateCxfRsResponseFromExchange()中的CXFExchange。現在,這個頭文件將在CXFExchange中可用,並且可以輕鬆獲取。我在我通過擴展AbstractPhaseInterceptor創建的一個攔截器中讀取了此標題。比我在PROTOCOL_HEADERS地圖中添加了這個標題。
以下是代碼片段,
public class OutResponseInterceptor extends AbstractPhaseInterceptor<Message>{
public RestResponseInterceptor(String phase) {
super(Phase.MARSHAL);
}
@Override
public void handleMessage(Message message) throws Fault {
try {
@SuppressWarnings("unchecked")
MultivaluedMap<String, Object> headers = (MetadataMap<String, Object>) message.get(Message.PROTOCOL_HEADERS);
if (headers == null) {
headers = new MetadataMap<String, Object>();
}
headers.putSingle("apps-client", (String) message.getExchange().get("apps-client"));
message.put(Message.PROTOCOL_HEADERS, headers);
} catch (Exception e) {
e.printStackTrace();
}
}
}
謝謝你.. !!
不,它沒有奏效。根據您的建議,它將設置爲CamelExchange,但不在CXFExchange的協議標頭中。 –