final long now = System.currentTimeMillis(); switch (event.getType()) { case RESOURCE_METHOD_START: this.methodTimeStart = now; break; case RESOURCE_METHOD_FINISHED: final ResourceMethod method = event.getUriInfo().getMatchedResourceMethod(); methodStats = new MethodStats(method, methodTimeStart, now - methodTimeStart); break; if (event.isResponseWritten()) { if (!responseStatuses.offer(event.getContainerResponse().getStatus())) { LOGGER.warning(LocalizationMessages.ERROR_MONITORING_QUEUE_RESPONSE()); event.getUriInfo().getMatchedTemplates() .stream() .collect(Collectors.collectingAndThen(Collectors.toList(), uriTemplates -> {
@Override public RequestEventListener onRequest(RequestEvent requestEvent) { if (requestEvent.getType() == RequestEvent.Type.START) { Span requestSpan = handleRequestStart(requestEvent.getContainerRequest()); return new OpenTracingRequestEventListener(requestSpan); } return null; }
switch (event.getType()) { case MATCHING_START: logVerbose(LocalizationMessages.OPENTRACING_LOG_MATCHING_STARTED()); OpenTracingUtils.formatList(event.getUriInfo().getMatchedResourceLocators()))); break; OpenTracingUtils.formatList(event.getUriInfo().getLocatorSubResources()))); break; logVerbose(LocalizationMessages.OPENTRACING_LOG_REQUEST_MATCHED(event.getUriInfo() .getMatchedResourceMethod() .getInvocable() event.getContainerRequestFilters().forEach(requestFilters::add); event.getUriInfo().getMatchedResourceMethod().getInvocable().getDefinitionMethod())); event.getContainerRequest().setProperty(OpenTracingFeature.SPAN_CONTEXT_PROPERTY, resourceSpan); break; event.getContainerRequest().setProperty(OpenTracingFeature.SPAN_CONTEXT_PROPERTY, requestSpan); resourceSpan.finish(); logVerbose(LocalizationMessages.OPENTRACING_LOG_RESPONSE_FILTERING_STARTED()); event.getContainerResponseFilters().forEach(responseFilters::add); logVerbose(LocalizationMessages.OPENTRACING_LOG_RESPONSE_FILTERING_FINISHED(responseFilters.size())); if (responseFilters.size() > 0) {
private void processExceptionMapperEvents() { final Queue<RequestEvent> eventQueue = monitoringEventListener.getExceptionMapperEvents(); final FloodingLogger floodingLogger = new FloodingLogger(eventQueue); while (!eventQueue.isEmpty()) { floodingLogger.conditionallyLogFlooding(); final RequestEvent event = eventQueue.remove(); final ExceptionMapperStatisticsImpl.Builder mapperStats = statisticsBuilder.getExceptionMapperStatisticsBuilder(); if (event.getExceptionMapper() != null) { mapperStats.addExceptionMapperExecution(event.getExceptionMapper().getClass(), 1); } mapperStats.addMapping(event.isResponseSuccessfullyMapped(), 1); } }
@Override public void onEvent(RequestEvent event) { final RequestEvent.Type eventType = event.getType(); if (eventType == RequestEvent.Type.RESOURCE_METHOD_START) { Optional<UnitOfWork> unitOfWork = methodMap.computeIfAbsent(event.getUriInfo() .getMatchedResourceMethod(), UnitOfWorkEventListener::registerUnitOfWorkAnnotations); unitOfWorkAspect.beforeStart(unitOfWork.orElse(null)); } else if (eventType == RequestEvent.Type.RESP_FILTERS_START) { try { unitOfWorkAspect.afterEnd(); } catch (Exception e) { throw new MappableException(e); } } else if (eventType == RequestEvent.Type.ON_EXCEPTION) { unitOfWorkAspect.onError(); } else if (eventType == RequestEvent.Type.FINISHED) { unitOfWorkAspect.onFinish(); } }
public void onEvent(RequestEvent event) { Tracer.SpanInScope maybeSpanInScope; switch (event.getType()) { maybeSpanInScope.close(); String maybeHttpRoute = route(event.getContainerRequest()); if (maybeHttpRoute != null) { event.getContainerRequest().setProperty("http.route", maybeHttpRoute); serverHandler.handleSend(event, event.getException(), span); break; default:
@Override public RequestEventListener onRequest(RequestEvent requestEvent) { if (requestEvent.getType() == RequestEvent.Type.START) return this; return null; }
@Override public void onEvent(RequestEvent event) { final RequestEvent.Type eventType = event.getType(); Optional<UnitOfWork> unitOfWork = methodMap.computeIfAbsent(event.getUriInfo() .getMatchedResourceMethod(), UnitOfWorkEventListener::registerUnitOfWorkAnnotations); if (event.getContainerResponse().getStatus() < 400) { transactionManager.commitTransaction(); } else {
@Override public void onEvent(RequestEvent event) { if (event.getType() == RequestEvent.Type.FINISHED) { final ResourceMethod method = event.getUriInfo().getMatchedResourceMethod(); final ResponseMeterMetric metric = (method != null) ? this.responseMeters.get(method.getInvocable().getDefinitionMethod()) : null; if (metric != null) { ContainerResponse containerResponse = event.getContainerResponse(); if (containerResponse == null) { if (event.getException() != null) { metric.meters.get(4).mark(); } } else { final int responseStatus = containerResponse.getStatus() / 100; if (responseStatus >= 1 && responseStatus <= 5) { metric.meters.get(responseStatus - 1).mark(); } } } } } }
public class ExceptionLogger implements ApplicationEventListener, RequestEventListener { private static final Logger log = LoggerFactory.getLogger(RequestExceptionLogger.class); @Override public void onEvent(final ApplicationEvent applicationEvent) { } @Override public RequestEventListener onRequest(final RequestEvent requestEvent) { return this; } @Override public void onEvent(RequestEvent paramRequestEvent) { if(paramRequestEvent.getType() == Type.ON_EXCEPTION) { log.error("", paramRequestEvent.getException()); } } }
@Override public void onEvent(RequestEvent event) { logger.trace("Received the event {}", event); switch (event.getType()) { case REQUEST_MATCHED: requestReceived(event.getContainerRequest()); break; case FINISHED: requestCompleted(event.getContainerRequest(), event.getContainerResponse()); break; default: break; } }
@Override public void onEvent(RequestEvent event) { if (event.getType() == RequestEvent.Type.ON_EXCEPTION) { final ResourceMethod method = event.getUriInfo().getMatchedResourceMethod(); final ExceptionMeterMetric metric = (method != null) ? this.exceptionMeters.get(method.getInvocable().getDefinitionMethod()) : null; if (metric != null) { if (metric.cause.isAssignableFrom(event.getException().getClass()) || (event.getException().getCause() != null && metric.cause.isAssignableFrom(event.getException().getCause().getClass()))) { metric.meter.mark(); } } } } }
private MethodMetricsContext getContext(RequestEvent event) { MetricsService metricsSvc = LensServices.get().getService(MetricsService.NAME); return metricsSvc.getMethodMetricsContext(event.getUriInfo().getMatchedResourceMethod(), event.getContainerRequest()); } }
@Override public String methodFromResponse(RequestEvent event) { return event.getContainerRequest().getMethod(); }
static boolean async(RequestEvent event) { return event.getUriInfo().getMatchedResourceMethod().isManagedAsyncDeclared() || event.getUriInfo().getMatchedResourceMethod().isSuspendDeclared(); } }
@Override public Iterable<Tag> httpRequestTags(RequestEvent event) { ContainerResponse response = event.getContainerResponse(); return Tags.of(JerseyTags.method(event.getContainerRequest()), JerseyTags.uri(event), JerseyTags.exception(event), JerseyTags.status(response), JerseyTags.outcome(response)); }
/** * Creates a {@code exception} tag based on the {@link Class#getSimpleName() simple * name} of the class of the given {@code exception}. * @param event the request event * @return the exception tag derived from the exception */ public static Tag exception(RequestEvent event) { Throwable exception = event.getException(); if (exception == null) { return EXCEPTION_NONE; } ContainerResponse response = event.getContainerResponse(); if (response != null) { int status = response.getStatus(); if (status == 404 || isRedirection(status)) { return EXCEPTION_NONE; } } if (exception.getCause() != null) { exception = exception.getCause(); } String simpleName = exception.getClass().getSimpleName(); return Tag.of("exception", StringUtils.isNotEmpty(simpleName) ? simpleName : exception.getClass().getName()); }
@Override public int statusCodeAsInt(RequestEvent event) { ContainerResponse response = event.getContainerResponse(); if (response == null) return 0; return response.getStatus(); }
/** * <p>getException.</p> * * @return a {@link java.lang.Throwable} object. */ public Throwable getException() { return event.getException(); }
/** * <p>getExceptionMapper.</p> * * @return a {@link javax.ws.rs.ext.ExceptionMapper} object. */ public ExceptionMapper<?> getExceptionMapper() { return event.getExceptionMapper(); }