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.
* Update gradle to 7.5
* Bump to 7.5.1
* gradle 7.5.1 with jdk17
* spotless
* one more --add-opens
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
Co-authored-by: Lauri Tulmin <ltulmin@splunk.com>
* Merge javaagent-instrumentation-api into javaagent-extension-api
* remove some leftover references to javaagent-instrumentation-api
* add missing instrumentation-api to distro example
* Add `http.route` to the server span when `ServerSpanNaming` is updated
* fix camel tests
* fix test compilation failure
* assert route in camel instrumentation
* Test captured HTTP headers - HTTP server tests, part 2
* Turn off captured HTTP headers testing for grizzly
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
* Convert servlet to instrumenter api
* make classes final
* Remove some tracer files
* remove xxx
* fix liberty and wildfly exception smoke test
* fix async smoke test on liberty
* Apply suggestions from code review
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
* generic TextMapGetter for servlets
* not going to use http.route for servlets
* simplify
* add servlet timeout in attribute extractor
* move classes from library to javaagent
* remove unneeded dependency
* make method private
* move helper class initialization to singleton, remove helpers that don't have any methods, add shouldStart checks
* Update instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletRequestContext.java
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
* add import
* rename methods that start and end spans
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>