2015-10-27 6 views
0

Я работаю над Java-агентом для управления некоторыми классами приложений и получения информации о времени выполнения. Когда я перераспределяю свое приложение на Tomcat 7, я теряю большинство своих инструментальных классов, и никакой метод в моем агенте не вызван для реинструментации новых загруженных классов.Instrumentation and Tomcat Hotdeploy

Как я могу захватить вновь загруженные классы, чтобы их измерить? Или есть способ захватить событие redeploy, чтобы начать getAllLoadedClasses и восстановить все?

Любой лучший способ решить эту проблему приветствуется.

ответ

0

При повторном развертывании приложения Tomcat запускает загрузчик классов для нераспределенного приложения. Таким образом, все классы могут быть выгружены JVM, который запускает Tomcat. В то же время приложение снова загружается другим загрузчиком классов, поэтому все классы перераспределенного приложения загружаются в первый раз.

Таким образом, вы можете просто перехватить процедуру загрузки с помощью ClassFileTransformer и измерить все классы без переопределения любого класса. ClassFileTransformer запускается для любого класса, загруженного Tomcat.