Пружинная загрузка, Jax-RS + Open Tracer
В моих учетных записях:
plugins {
id 'java'
id 'org.springframework.boot' version '2.2.2.RELEASE'
id "io.spring.dependency-management" version "1.0.8.RELEASE"
}
implementation("org.springframework.boot:spring-boot-starter-jersey") ...
implementation("io.opentracing.contrib:opentracing-jaxrs2-discovery:1.0.0") // <---
Проблема начинается, когда я пытаюсь ввести Tracer:
@Path("/my)
@Produces(MediaType.APPLICATION_JSON)
public class MyResource { ...
@Inject
Tracer tracer;
Я попробовал несколько способов добавить транс:
https://github.com/opentracing-contrib/java-jaxrs
Последнее, что я попробовал, это: (@WebListener, который я тоже пробовал)
@Provider
public class TracingInitializer implements DynamicFeature {
private final ServerTracingDynamicFeature serverTracingDynamicFeature =
new ServerTracingDynamicFeature.Builder(GlobalTracer.get())
.withOperationNameProvider(ClassNameOperationName.newBuilder())
.build();
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
serverTracingDynamicFeature.configure(resourceInfo, context);
}
}
Затем добавьте его в:
@Named
public final class JerseyConfig extends ResourceConfig { ...
@Inject
public JerseyConfig() {
register(TracingInitializer.class);
При запуске я получаю следующее исключение:
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=Tracer,parent=MyResource,qualifiers={},position=-1,optional=false,self=false,unqualified=null,124873055)
hk2 '@Inject работал нормально перед добавлением открытых tracing dep.
Q: Есть идеи, как заставить это работать? Чтобы иметь возможность вводить Tracer.