Мы пытаемся сплетить aspectj в байт-коде Java для нативного объекта Thread. У нас возникают проблемы с загрузчиком классов, потому что в процессе выполнения аспекта для советника аспекта должен использоваться тот же загрузчик классов, что и для rt.jar.
Кто-нибудь когда-нибудь делал это успешно? Мы не можем использовать привязку загрузчика, чтобы решить эту проблему из-за других требований.
Приложение развернуто на экземпляре Liberty Server.
Аспект является реализацией этого примера:
public aspect ThreadStartInterceptor {
before(Thread childThread) :
Long parentId = new Long(Thread.currentThread().getId());
Long childId = new Long(childThread.getId());
call(public void Thread+.start()) && target(childThread){
System.out.printf("%s%n Parent thread: %3d -> %s%nChildthread:
%3d -> %s " , thisJoinPoint,
parentId,
Thread.currentThread().getName(),
childId,
childThread.getName()
);
SingletonCache.addCacheContext(
childId.toString(),SingletonCache.getCachedContext(parentID.toString()))
}
}