apm中关于类加载器(Tomcat和json)的坑

在开发apm链路追踪项目的时候遇到一些坑,比如采集http应用性能时找不到目标类httpservlet,使用fastjson输出出现类加载器的问题。
在Tomcat类加载模型中,AppClassLoader下还有commonclassloader,它下面又有webclassloader,子类加载器可以访问父类,而父类是不能访问子类的,所以当出现父类加载器加载的类去访问子类加载器加载的类的时候就会报错
在这里插入图片描述
出现这种问题的解决办法之一就是将子类加载器中的类打包到父类加载器模块中,比如父类加载器中加载的类访问不到json类,就可以将json打包到父类。
还有个坑是json会使用当前线程的类加载器来加载要使用的类,如果要使用的类不在当前线程的类加载器下,也会报错
在这里插入图片描述
当前线程的类加载器:
在这里插入图片描述
也就是说当前的类加载webappclassloader下没有ServiceStatistis类,所以会报错。
可以查看ASMClassloader类的源码,其中会判断类加载器是否和当前线程的类加载器一致,不一致就会使用asm加载器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值