![[18.0.0.1 und höher]](../ng_v18001plus.gif)
Explizite Instrumentierung von verteiltem Tracing-Code aktivieren
Verwenden Sie die Annotation @Traced, um Klassen und Methoden für OpenTracing zu instrumentieren.
Informationen zu diesem Vorgang
Wenden Sie die Annotation @Traced an, um eine Klasse oder Methode anzugeben, die für OpenTracing zu tracen.
Vorgehensweise
- Wenden Sie die Annotation @Traced auf eine Klasse oder Methode an.
- Wenn Sie die Annotation @Traced auf eine Klasse anwenden möchten, wird die Annotation auf alle Methoden dieser Klasse angewendet.
- Wenn Sie die Annotation @Traced auf eine Klasse und eine Methode anwenden, hat die Annotation Vorrang, die auf die Methode angewendet wird. Die Annotation beginnt einen Bereich (span) am Anfang der Methode und beendet den Bereich (span) am Ende der Methode.
- Optional: Wenden Sie Argumente auf die Annotation @Traced an.
- value=[true|false]
Das Argument value=[true] ist der Standardwert.
Verwenden Sie @Traced(false), um bestimmte Methoden mit Annotationen zu versehen, und die Erstellung eines Bereichs (span) für diese Methoden zu inaktivieren. Sie können auch @Traced(false) verwenden, um die Erstellung des Bereichs (span) eines bestimmten JAX-RS-Endpunkts zu inaktivieren. Wenn Sie @Traced(false) für eine JAX-RS-Endpunktmethode verwenden, wird der vorgeschaltete SpanContext nicht extrahiert. Keine Bereiche, die Sie erstellen, entweder automatisch für abgehende Anforderungen oder explizit über einen eingefügten Tracer, haben einen übergeordneten, vorgeschalteten Bereich in der Bereichshierarchie. Standardmäßig überwacht der Programmtrace alle JAX-RS-Endpunktmethoden.
- operationName=<Name für den Bereich>
Der Standardwert ist in Anführungszeichen ("") gesetzt.
Wenn Sie Anführungszeichen ("") für den operationName-Wert verwenden, verwendet die Annotation @Traced den Standardoperationsnamen. Wenn die mit Annotationen versehene Methode kein JAX-RS-Endpunkt ist, hat der Standardoperationsname des neuen Bereichs für die Methode die Werte <Paketname>.<Klassenname>.<Methodenname>. Wenn Sie den operationName-Wert für eine Klasse angeben, verwendet die Klasse diesen operationName-Wert für alle Methoden der Klasse, bis er von einer Methode explizit mit dem eigenen operationName-Wert überschrieben wird.
Das folgende Beispiel veranschaulicht die optionalen Argumente für die Annotation @Traced:
@InterceptorBinding @Target({ TYPE, METHOD }) @Retention(RUNTIME) public @interface Traced { @Nonbinding boolean value() default true; @Nonbinding String operationName() default ""; }
- Greifen Sie auf den konfigurierten Tracer zu.
- Verwenden Sie die Instanz, die mit dem zugrundeliegenden OpenTracing-Tracer-Objekt konfiguriert wurde. Legen Sie für die MicroProfile-Implementierung fest, dass der konfigurierte Tracer mit CDI (Contexts and Dependency Injection) verwendet wird.
- Greifen Sie auf das konfigurierte Tracerobjekt zu, indem Sie die Tracerklasse einfügen, die Sie für die bestimmte Anwendung für diese Umgebung konfiguriert haben. Jeden Anwendung empfängt eine andere Tracerinstanz. Das Tracerobjekt aktiviert die Unterstützung für komplexe Tracing-Anforderungen, wie z. B. das Erstellen von Bereichen in Geschäftsmethoden. Das folgende Beispiel zeigt eine eingefügte Tracerklasse an:
@Inject io.opentracing.Tracer configuredTracer;
- Fügen Sie tag-, log- und baggage-Elemente den Bereichen hinzu, wie im folgenden Beispiel gezeigt:
configuredTracer.activeSpan().setTag(...); configuredTracer.activeSpan().log(...); configuredTracer.activeSpan().setBaggage(...);
![[17.0.0.4 und höher]](../ng_v17004plus.gif)

Dateiname: twlp_dist_tracing_code_inst.html