Другим подходом будет использование BTrace - оно похоже на AspectJ, но может подключаться к работающему Java-приложению и применять код регистрации на лету (он также может отсоединяться от приложения,удаляя весь введенный код, но оставляя приложение работающим, как оно было до использования BTrace )
Чтобы использовать BTrace , вы должны написать простой скрипт трассировки, который будет POJOпомечены BTrace аннотациями (и некоторыми ограничениями относительно того, что можно использовать, чтобы избежать сбоя целевого приложения).
В этом случае скрипт будет выглядеть так:
@BTrace public class FooTracer {
@OnMethod(clazz="Bar", method="foo")
public static void onEntry() {
println("begin of foo()");
}
@OnMethod(clazz="Bar", method="foo", location=@Location(Kind.RETURN))
public static void onExit() {
println("end of foo");
}
}
Есть еще много вещей, которые вы можете сделать с BTrace - просто обратитесь к руководству пользователя и примерам.Номинально это консольное приложение, но есть интеграция с VisualVM , делающая опыт работы с BTrace более приятным.