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; }
@MetadataDefinition
to the declaration of @Severity
and @TransactionId
ensures the information is saved by Flight Recorder.