Я создаю Servlet Filter в качестве независимого jar-файла (используя brave как часть Spring Sleuth-Greenwich.BUILD-SNAPSHOT), чтобы его можно было использовать в загрузочном приложении Spring.Я создал фильтр и включил его в приложение весенней загрузки.Но при этом он всегда возвращает исключение нулевого указателя (хотя на сервере zipkin он создает половину запеченного промежутка), как показано ниже:
package com.somepackage;
import brave.ScopedSpan;
import brave.Span;
import brave.Tracer;
import brave.Tracing;
public class TestFilter implements Filter {
@Autowired
private Tracer tracer;
@Autowired
Span span;
@Autowired
private Tracing tracing;
FilterConfig filterConfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String contextPath = httpServletRequest.getServletPath();
StringBuffer requestUrl = httpServletRequest.getRequestURL();
//always return null pointer at the below line 1. ??
Span span = tracer.newTrace().name("some-span-name").start(); //line 1
try {
span.tag("context-path", contextPath);
String logId = MDC.get(LOG_ID); //Assuming a key in MDC
span.tag("LOG_ID", correlationId);
span.tag("ENV", "dev");
chain.doFilter(request, response);
} catch (RuntimeException | Error e) {
span.error(e);
throw e;
} finally {
span.finish(); // always finish the span
}
}
}
@Override
public void destroy() {}
}
{"thread":"http-nio-8080-exec-2","level":"ERROR","loggerName":"org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter","message":"Uncaught exception thrown","thrown":{"commonElementCount":0,"name":"java.lang.NullPointerException","extendedStackTrace":[{"class":"com.somepackage.TestFilter","method":"doFilter","file":"EmZipkinFilter.java","line":37,"exact":false,"location":"testzipkin-1.0-SNAPSHOT.jar!/","version":"?"}