MetadataDefinition (Java SE 17 & JDK 17)
Description: declaration: module: jdk.jfr, package: jdk.jfr, annotation type: MetadataDefinition
Keywords: jdk.jfr.MetadataDefinition class

Module jdk.jfr
Package jdk.jfr

# Annotation Interface MetadataDefinition

@Retention(RUNTIME) @Target(TYPE) public @interface MetadataDefinition
Meta annotation for defining new types of event metadata.

In the following example, a transaction event is defined with two user-defined annotations, `@Severity` and `@TransactionId`.

     @MetadataDefinition
     @Label("Severity")
     @Description("Value between 0 and 100 that indicates severity. 100 is most severe.")
     @Retention(RetentionPolicy.RUNTIME)
     @Target({ElementType.TYPE})
     public @interface Severity {
         int value() default 50;
     }

     @MetadataDefinition
     @Label("Transaction Id")
     @Relational
     @Retention(RetentionPolicy.RUNTIME)
     @Target({ElementType.FIELD})
     public @interface TransactionId {
     }

     @Severity(80)
     @Label("Transaction Blocked")
     class TransactionBlocked extends Event {
         @TransactionId
         @Label("Transaction")
         long transactionId1;

         @TransactionId
         @Label("Transaction Blocker")
         long transactionId2;
     }

Adding `@MetadataDefinition` to the declaration of `@Severity` and `@TransactionId` ensures the information is saved by Flight Recorder.

Since:
  9