This allows custom distributions of the agent to register `HttpServerResponseCustomizer` implementations. When a supported HTTP server instrumentation starts processing a response, the `onStart` method of all registered implementations will be invoked with the `Context` of the SERVER span, an instrumentation-specific response object and `HttpServerResponseMutator` instance that allows appending headers to that response. The intent of this is to allow custom distributions to set a header containing span context information, such as the trace and span IDs. As such, the initial implementation only allows appending response headers and nothing else. The `HttpServerResponseCustomizer` and related classes are currently in a subpackage of the `io.opentelemetry.javaagent.bootstrap` package in `javaagent-extension-api`. This makes them get loaded in the bootstrap classloader, thus directly accessible from instrumentations. I am not aware if there is an elegant way to put it in the agent classloader instead, yet have the same instance accessible from both `AgentInstaller` and instrumentations. This also includes Tomcat-specific implementation in order to be able to demonstrate that it works, and add automated testing of this to HttpServerTest including one implementation. |
||
---|---|---|
.. | ||
tomcat-7.0/javaagent | ||
tomcat-10.0/javaagent | ||
tomcat-common/javaagent | ||
tomcat-jdbc | ||
README.md |
README.md
Instrumentation for Tomcat request handlers
Tomcat support is divided into the following sub-modules:
tomcat-common:javaagent
contains common type instrumentation, advice helper classes and abstract tracer used by thejavaagent
modules of all supported Tomcat versionstomcat-7.0:javaagent
applies Tomcat request handler instrumentation for versions[7, 10)
tomcat-10.0:javaagent
applies Tomcat request handler instrumentation for versions[10,)
Instrumentations in tomcat-7.0
and tomcat-10.0
are mutually exclusive, this is guaranteed by
tomcat-10.0
instrumentation checking that its Request
class uses jakarta.servlet
classes, and
the tomcat-7.0
module doing the opposite check.