想用Instrumentation监控cache的实际消耗内存,结果手贱,图方便把Instrumentation类和cache的spring配置文件打到了一个包里,通过在jboss启动脚本里增加 -javaagent:xxx.jar生效
Instrumentation本身没问题,结果是spring里的一些aop类找不到,报“org/aspectj/lang/ProceedingJoinPoint.class”这个类找不到,肯定是spring动态加载找不到这个文件,但奇怪的是lib里明明有这个类。。。
郁闷了半天,重要想到可能和javaagent配置有关,于是豁然开朗了
由于加载xxx.jar的classloader比jboss的classloader更底层,spring先加载了xxx.jar里的xml配置,而不是jboss里配的WIN-INF/lib里的jar,同时这个xml里用到的class也都会从根classloader加载,当然找不到了
解决方法很简单,把Instrumentation单独打个包,别搅合在一起就行了
Instrumentation本身没问题,结果是spring里的一些aop类找不到,报“org/aspectj/lang/ProceedingJoinPoint.class”这个类找不到,肯定是spring动态加载找不到这个文件,但奇怪的是lib里明明有这个类。。。
郁闷了半天,重要想到可能和javaagent配置有关,于是豁然开朗了
由于加载xxx.jar的classloader比jboss的classloader更底层,spring先加载了xxx.jar里的xml配置,而不是jboss里配的WIN-INF/lib里的jar,同时这个xml里用到的class也都会从根classloader加载,当然找不到了
解决方法很简单,把Instrumentation单独打个包,别搅合在一起就行了
本文记录了一次使用Instrumentation监控缓存内存消耗时遇到的问题。由于将Instrumentation类与Spring配置文件打包在一起,导致Spring无法正确加载AOP相关的类。通过调整打包方式解决了这一问题。
4752

被折叠的 条评论
为什么被折叠?



