Невозможно создать храбрый след - PullRequest
0 голосов
/ 20 ноября 2018

Я создаю 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":"?"}
...