Проблема ClassLoader при попытке сплетения аспекта для нити советуют - PullRequest
0 голосов
/ 27 октября 2018

Мы пытаемся сплетить 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()))
       } 
}  
...