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