我可以在最终响应中设置自定义标题。我通过在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的协议标头中。 –