diff --git a/pom.xml b/pom.xml
index 0676cb66e..4f826c5d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,11 @@
flume-zipkin-metrics-sink
${brave.version}
+
+ com.google.guava
+ guava
+ 18.0
+
org.springframework.cloud
spring-cloud-starter-zuul
diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml
index 2251b3869..a1cd2f182 100644
--- a/spring-cloud-sleuth-zipkin/pom.xml
+++ b/spring-cloud-sleuth-zipkin/pom.xml
@@ -50,6 +50,10 @@
org.springframework.cloud
spring-cloud-starter-zuul
+
+ com.google.guava
+ guava
+
org.projectlombok
lombok
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
index f80ef8dd3..472d2d483 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java
@@ -16,7 +16,6 @@ import com.github.kristofa.brave.ClientTracer;
import com.github.kristofa.brave.ClientTracerConfig;
import com.github.kristofa.brave.EndPointSubmitterConfig;
import com.github.kristofa.brave.FixedSampleRateTraceFilter;
-import com.github.kristofa.brave.LoggingSpanCollectorImpl;
import com.github.kristofa.brave.ServerSpanThreadBinderConfig;
import com.github.kristofa.brave.ServerTracerConfig;
import com.github.kristofa.brave.SpanCollector;
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinFilter.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinFilter.java
new file mode 100644
index 000000000..f8de9d915
--- /dev/null
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinFilter.java
@@ -0,0 +1,43 @@
+package org.springframework.cloud.sleuth.zipkin.web;
+
+import org.springframework.cloud.sleuth.zipkin.ZipkinInterceptor;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import java.io.IOException;
+
+/**
+ * @author Spencer Gibb
+ */
+public class ZipkinFilter implements Filter {
+
+ private final ZipkinInterceptor zipkinInterceptor;
+
+ public ZipkinFilter(ZipkinInterceptor zipkinInterceptor) {
+ this.zipkinInterceptor = zipkinInterceptor;
+ }
+
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ //NOOP
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ zipkinInterceptor.preTrace(request);
+
+ chain.doFilter(request, response);
+
+ zipkinInterceptor.postTrace(request);
+ }
+
+ @Override
+ public void destroy() {
+ //NOOP
+ }
+}
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinWebAutoConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinWebAutoConfiguration.java
index 3fcf7e96a..56c2d1c34 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinWebAutoConfiguration.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/web/ZipkinWebAutoConfiguration.java
@@ -2,6 +2,7 @@ package org.springframework.cloud.sleuth.zipkin.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
@@ -34,10 +35,15 @@ public class ZipkinWebAutoConfiguration {
@Autowired
private ServerTracer serverTracer;
- @Bean
+ /*@Bean
public ZipkinHandlerInterceptor zipkinHandlerInterceptor() {
return new ZipkinHandlerInterceptor(httpServletRequestInterceptor());
- }
+ }*/
+
+ @Bean
+ public ZipkinFilter zipkinFilter() {
+ return new ZipkinFilter(httpServletRequestInterceptor());
+ }
@Bean
public HttpServletRequestInterceptor httpServletRequestInterceptor() {
@@ -45,8 +51,9 @@ public class ZipkinWebAutoConfiguration {
}
@Bean
- public WebMvcConfigurerAdapter webMvcConfigurerAdapter() {
- return new ZipkinWebConfigurer(zipkinHandlerInterceptor());
+ @ConditionalOnBean(ZipkinHandlerInterceptor.class)
+ public WebMvcConfigurerAdapter webMvcConfigurerAdapter(ZipkinHandlerInterceptor zipkinHandlerInterceptor) {
+ return new ZipkinWebConfigurer(zipkinHandlerInterceptor);
}
@Configuration