阿男的小窝

View the Project on GitHub

Jersey在Header中添加Tracing信息的方法

本文分析Jersey是如何在HTTP response里面添加tracing的信息。

在「使用Jersey的Tracing功能」1这篇文章里,我介绍了Jersey的tracing功能的使用方法。

可以看到,Tracing info是通过HTTP header的形式从response返回的:

从图中可以看出,每一条数据都有编号:

编号的格式是X-Jersey-Tracing-XXX的形式。

这个编号定义在TracingLogger里:

对于这个编号的使用,位于TracingLoggerImplflush(…)方法当中:

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]);
	}
}

这部分就不在本篇文章中具体分析了。

  1. http://weinan.io/2018/05/08/jersey.html