Java - способен ли bytebuddy агент "полностью" переопределить класс?

Способен ли агент байтового партнера преодолевать ограничения API присоединения, например, "определение нового метода", "изменения статической переменной"? я могу увидеть это redefineClasses Метод вызывается из Agent Builder, но не уверен, что он также соответствует тем же ограничениям, что и API присоединения.

Я пытаюсь понять, могу ли я сделать следующее:

1) Загрузите jar агента с помощью загрузчика классов приложения, например ParallelWebappClassLoader, Мое приложение представляет собой веб-приложение сервлета, и во время выполнения оно использует вышеуказанный загрузчик классов для загрузки всех классов приложения.

2) Полностью переопределить мои классы, т. Е. Любые добавления / обновления методов и изменения / обновления / добавления статических / локальных переменных.

У меня есть агент, который в настоящее время работает в рамках ограничений Attach API, но я пытаюсь делегировать загрузку классов из System Class Loader приложению.

Большое спасибо,

1 ответ

Это ограничение виртуальной машины Java, на которой вы работаете. Byte Buddy способен "полностью переопределить" класс с помощью его API, но большинство виртуальных машин будут отклонять такие изменения. Взгляните на динамическую ВМ эволюции кода, чтобы иметь возможность применять такие изменения.

Другие вопросы по тегам