in apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java [57:109]
public static Object onEnterHandle(@Advice.Argument(0) HttpExchange exchange) {
if (tracer.currentTransaction() != null
|| serverHelper.isRequestExcluded(exchange.getRequestURI().getPath(), exchange.getRequestHeaders().getFirst("User-Agent"))) {
return null;
}
Transaction<?> transaction = tracer.startChildTransaction(exchange.getRequestHeaders(), HeadersHeaderGetter.INSTANCE, Thread.currentThread().getContextClassLoader());
if (transaction == null) {
return null;
}
TransactionNameUtils.setNameFromHttpRequestPath(
exchange.getRequestMethod(),
exchange.getRequestURI().getPath(),
transaction.getAndOverrideName(AbstractSpan.PRIORITY_LOW_LEVEL_FRAMEWORK),
webConfiguration.getUrlGroups());
transaction.withType(Transaction.TYPE_REQUEST)
.setFrameworkName("JDK HTTP Server");
Request request = transaction.getContext().getRequest();
request.getSocket()
.withRemoteAddress(exchange.getRemoteAddress().getAddress().getHostAddress());
request.withHttpVersion(exchange.getProtocol())
.withMethod(exchange.getRequestMethod());
request.getUrl()
.withProtocol(exchange instanceof HttpsExchange ? "https" : "http")
.withHostname(getHostname(exchange))
.withPort(exchange.getLocalAddress().getPort())
.withPathname(exchange.getRequestURI().getPath())
.withSearch(exchange.getRequestURI().getQuery());
if (transaction.isSampled() && coreConfiguration.isCaptureHeaders()) {
Headers headers = exchange.getRequestHeaders();
if (headers != null) {
for (Map.Entry<String, List<String>> header : headers.entrySet()) {
if ("Cookie".equalsIgnoreCase(header.getKey())) {
for (String[] cookie : CookieHelper.getCookies(header.getValue())) {
request.addCookie(cookie[0], cookie[1]);
}
} else {
request.addHeader(header.getKey(), Collections.enumeration(header.getValue()));
}
}
}
}
return transaction.activate();
}