Java-агенты

javaагенты

Java-агенты представляют собой интересную возможность JVM. Агенты могут быть либо статическими (загружать, когда приложение java запускается со специальным флагом), либо они могут быть динамическими (используя динамический API из java, мы можем динамически привязываться к определенному PID JVM. Агенты могут использоваться для запуска любого кода перед приложением запускает или даже изменяет байт-код. Самое интересное в агентах – это то, что они относятся к среде выполнения, и нам не нужно изменять исходный код целевого приложения. Агенты похожи на Аспекты, но, по-моему, намного лучше. Mockito использует макеты в Чтобы протестировать сложные сценарии, практически все решения для наблюдения за журналами и метриками также имеют агентов. Сегодня я хочу поделиться 2 pocs, один из которых использует обычное Java-приложение и выполняет манипуляции с байт-кодом, а второй использует Spring Boot 2.x и запускает код навсегда в фоновом потоке, поскольку приложение также работает. Итак, приступим!

Видео

Код

https://github.com/diegopacheco/java-pocs/tree/master/pocs/springboot2-agent-fun

https://github.com/diegopacheco/java-pocs/tree/master/pocs/agent-fun

Ура,

Диего Пачеко