Jersey在Header中添加Tracing信息的方法
本文分析Jersey是如何在HTTP response里面添加tracing的信息。
在「使用Jersey的Tracing功能」1这篇文章里,我介绍了Jersey的tracing功能的使用方法。
可以看到,Tracing info是通过HTTP header的形式从response返回的:
从图中可以看出,每一条数据都有编号:
编号的格式是X-Jersey-Tracing-XXX
的形式。
这个编号定义在TracingLogger
里:
对于这个编号的使用,位于TracingLoggerImpl
的flush(…)
方法当中:
flush(…)
方法最后由ServerRuntime.writeResponse(…)
方法调用:
以上是tracing info从服务端到客户端的传递过程。
此外,具体的tracing info信息,是封装在TracingInfo
当中的,具体可以在TracingLogger.flush(…)
方法中找到:
@Override
public void flush(final MultivaluedMap<String, Object> headers) {
final String[] messages = tracingInfo.getMessages();
for (int i = 0; i < messages.length; i++) {
headers.putSingle(String.format(TracingLogger.HEADER_RESPONSE_FORMAT, i), messages[i]);
}
}
这部分就不在本篇文章中具体分析了。
-
http://weinan.io/2018/05/08/jersey.html ↩