Spec-Zone.ru › OpenJDK 17

Класс EventFactory

java.lang.Object
jdk.jfr.EventFactory
public final class EventFactory extends Object
Класс для определения события во время выполнения.

Настоятельно рекомендуется определять событие во время компиляции, если расположение полей известно, чтобы виртуальная машина Java (JVM) могла оптимизировать код, возможно, полностью удалить всю интроспекцию, если Flight Recorder не активен или если значение включения для этого события установлено в false.

Для определения события во время компиляции см. Event.

Следующий пример демонстрирует реализацию динамического Event класса.

 
 List<ValueDescriptor> fields = new ArrayList<>();
 List<AnnotationElement> messageAnnotations = Collections.singletonList(new AnnotationElement(Label.class, "Message"));
 fields.add(new ValueDescriptor(String.class, "message", messageAnnotations));
 List<AnnotationElement> numberAnnotations = Collections.singletonList(new AnnotationElement(Label.class, "Number"));
 fields.add(new ValueDescriptor(int.class, "number", numberAnnotations));

 String[] category = { "Example", "Getting Started" };
 List<AnnotationElement> eventAnnotations = new ArrayList<>();
 eventAnnotations.add(new AnnotationElement(Name.class, "com.example.HelloWorld"));
 eventAnnotations.add(new AnnotationElement(Label.class, "Hello World"));
 eventAnnotations.add(new AnnotationElement(Description.class, "Helps programmer getting started"));
 eventAnnotations.add(new AnnotationElement(Category.class, category));

 EventFactory f = EventFactory.create(eventAnnotations, fields);

 Event event = f.newEvent();
 event.set(0, "hello, world!");
 event.set(1, 4711);
 event.commit();
 
 
С момента:
9

Краткое описание методов

Модификатор и тип Метод Описание
static EventFactory create(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)
Создает объект EventFactory.
EventType getEventType()
Возвращает тип события, связанный с этим фабрикой событий.
Event newEvent()
Инициализирует событие, чтобы его можно было заполнить данными и записать в систему Flight Recorder.
void register()
Регистрирует не зарегистрированное событие.
void unregister()
Дерегистрирует событие, связанное с этой фабрикой событий.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

create

public static EventFactory create(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields)
Создает объект EventFactory.

Порядок описателей значений определяет индекс для установки значений события.

Параметры:
annotationElements - список элементов аннотаций, описывающих аннотации события, не null
fields - список описателей, описывающих поля события, не null
Возвращает:
фабрику событий, не null
Исключения:
IllegalArgumentException - если входной данные некорректны. Например, входные данные могут быть некорректными, если тип или имя поля некорректны в языке Java или элемент аннотации ссылается на тип, который невозможно найти.
SecurityException - если существует менеджер безопасности и у вызывающего объекта нет FlightRecorderPermission("registerEvent")
См. также:
  • Event.set(int, Object)

newEvent

public Event newEvent()
Инициализирует событие, чтобы его можно было заполнить данными и записать в систему Flight Recorder.

Используйте метод Event.set(int, Object) для установки значения.

Возвращает:
экземпляр события, не null

getEventType

public EventType getEventType()
Возвращает тип события, связанный с этой фабрикой событий.
Возвращает:
тип события, связанный с этой фабрикой событий, не null
Исключения:
IllegalStateException - если фабрика событий создана с аннотацией Registered(false) и класс события не зарегистрирован вручную до вызова этого метода

register

public void register()
Регистрирует не зарегистрированное событие.

По умолчанию класс события, связанный с этой фабрикой событий, регистрируется при создании фабрики событий, если событие не имеет аннотации Registered.

Зарегистрированный класс события может записывать данные в Flight Recorder, а метаданные события можно получить, вызвав FlightRecorder.getEventTypes().

Если класс события, связанный с этой фабрикой событий, уже зарегистрирован, вызов этого метода игнорируется.

Исключения:
SecurityException - если существует менеджер безопасности и у вызывающего объекта нет FlightRecorderPermission("registerEvent")
См. также:
  • Registered
  • FlightRecorder.register(Class)

unregister

public void unregister()
Дерегистрирует событие, связанное с этой фабрикой событий.

Незарегистрированный класс события не может записывать данные в Flight Recorder, а метаданные события нельзя получить, вызвав FlightRecorder.getEventTypes().

Если класс события, связанный с этой фабрикой событий, еще не зарегистрирован, вызов этого метода игнорируется.

Исключения:
SecurityException - если существует менеджер безопасности и у вызывающего объекта нет FlightRecorderPermission("registerEvent")
См. также:
  • Registered
  • FlightRecorder.unregister(Class)

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.jfr/jdk/jfr/EventFactory.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API