![[18.0.0.1 and later]](../ng_v18001plus.gif)
启用显式分布式跟踪代码检测
使用 @Traced 注释检测 OpenTracing 的类和方法。
关于此任务
应用 @Traced 注释,以指定要针对 OpenTracing 跟踪的类或方法。
过程
- 将 @Traced 注释应用于类或方法。
- 将 @Traced 注释应用于类时,该注释将应用于这个类的所有方法。
- 如果将 @Traced 注释应用于类和方法,那么应用于方法的注释将优先。该注释将产生一个范围,它起始于方法开头,并结束于方法末尾。
- 可选: 将自变量应用于 @Traced 注释。
- value=[true|false]
value=[true] 自变量是缺省值。
使用 @Traced(false) 可对特定方法进行注释,并禁止为这些方法创建范围。还可以使用 @Traced(false) 来禁止为特定 JAX-RS 端点创建范围。将 @Traced(false) 用于 JAX-RS 端点方法时,不会抽取上游 SpanContext。在范围层次结构中,您创建的任何范围(为出站请求自动创建的范围,或使用已注入的跟踪器显式创建的范围)都没有上游父范围。缺省情况下,程序将跟踪所有 JAX-RS 端点方法。
- operationName=<Name for the span>
缺省值是双引号 ("")。
如果您使用双引号 ("") 作为 operationName 值,那么 @Traced 注释将使用缺省操作名称。如果附注释的方法不是 JAX-RS 端点,那么该方法的新范围的缺省操作名称将具有 <package name>.<class name>.<method name> 值。如果对类指定 operationName 值,那么这个类会将该 operationName 值用于其所有方法,除非有方法使用自己的 operationName 值显式将其覆盖。
以下示例显示 @Traced 注释的可选自变量:
@InterceptorBinding @Target({ TYPE, METHOD }) @Retention(RUNTIME) public @interface Traced { @Nonbinding boolean value() default true; @Nonbinding String operationName() default ""; }
- 访问所配置的跟踪器。
- 使用底层 OpenTracing 跟踪器对象配置的实例。设置 MicroProfile 实现,以便将配置的跟踪器与上下文和依赖性注入 (CDI) 配合使用。
- 通过注入已为此环境的特定应用程序配置的跟踪器类,访问所配置的跟踪器对象。每个应用程序都会接收到一个不同的跟踪器实例。跟踪器对象将启用对复杂跟踪需求(例如,在业务方法内创建范围)的支持。以下示例显示一个已注入的跟踪器类:
@Inject io.opentracing.Tracer configuredTracer;
- 向范围中添加标记、日志和随行数据 (baggage),如以下示例所示:
configuredTracer.activeSpan().setTag(...); configuredTracer.activeSpan().log(...); configuredTracer.activeSpan().setBaggage(...);
父主题:
启用分布式跟踪
![[17.0.0.4 and later]](../ng_v17004plus.gif)

文件名:twlp_dist_tracing_code_inst.html