摘要:最前面2个静态变量,一个类加载器,一个锁 拿锁,如拿到则弄一下类加载器 一筐子反射 设置配置参数 Path是java公共类,所以140 142,而Logger不一样,取决于ParquetClassLoader与TomcatLoader是否平行 如果任务结束时,当前线程是interrupt状态,则抛错
阅读全文
摘要:会员 周边 新闻 博问 闪存 赞助商 Chat2DB 无 一次不引用包跑外部依赖的实践(八)异常 https://pan.baidu.com/s/1VmvAlknO87ev61ETKif_9g 1 异常没有往上抛,也没有打日志 2 可以不抛,但要打日志,并break(因为下一个future.get继
阅读全文
摘要:1 app-tomcat common tool1(不可信任) common others1(不可信任) tool2 -自定义加载器 common - 主加载器 others2 -自定义加载器 具体实施两种方案 1 构造无父加载器,与tomcat加载器平行,override findclass to
阅读全文
摘要:future task cancel (二)向下传递中断【重要】- java object多大 java对象内存模型 数组有多长(十三) 内存泄漏事故 内存泄漏事故(二)线程的中断不可信任【重要】配合volatile强制回收子线程成员变量 内存泄漏事故(三)线程的interrupted flag 的
阅读全文
摘要:在一次maven构建类冲突解决方法论(二)加载顺序 中,使用了-XX:+TraceClassLoading打印哪些jar包被真实用到 我们还可以使用自定义classloader来
阅读全文
摘要:1 完全独立 2 继承tomcat 3 第一点自己处理 因为用到的线程池在tomcat类加载器中static形式存在 因此如果findclass遇到相应的类,让他走到tomcat类加载器的类,实践下来不稳定 资源也自己处理,因为有些配置要走主加载器
阅读全文
摘要:c7aaa6007d37d29d3b94d9a420f710abebb1fdec 1 spi 解决方式:把invoke放到新线程 2 log4j 2.1 log4j让平行加载器tomcatwebappclassloader加载行不行, 如果log.info(a class only in sub c
阅读全文
摘要:war(仓库1) lib xxx core com.aaa.A类加两个字段,getter、setter core(仓库2) com.aaa.A 直接拷贝过来,全限定 背景:core无法及时deploy,war无法拿到最新core jar包解决:在war中将类和增加的字段以全限定性名拷贝到war下,
阅读全文
摘要:A cl1 { new thread().setClassLoader(cl2) new cl3 -> new B b.func { C c = new C } } 三个类加载器把C纳入可见范围内1 A C2 C3 B C /Users/joyce/work/MyTest/ClWhichClassL
阅读全文
摘要:Firstly, there is a critical java rule. Suppose there are 2 jars, A.jar and B.jar in the same classloader, which both contain a resource with the same
阅读全文
摘要:loadClass的双亲委派我们已经很熟了,再来看看forName的双亲委派 设计代码结构: MyMain lc5 TestForName URLClassLoader(MySub) JustForName MySub lc5 JustForName MyMain: public class Tes
阅读全文
摘要:load/find class 与 forname 在static代码块加载的不同 上一篇说到: 既不用forName,又不用loadClass也可以; 经过JDBC SPI 类加载机制,我们发现,原来 DriverMagager的静态函数getConnection激发DriverManager的静
阅读全文
摘要:今天对类加载器顺序-另一种绕开双亲委派的方式中的第2种方式做一个实践,基本与JDBC注册原理与自定义类加载器解决com.cloudera.hive.jdbc41.HS2Driver的加载【重点】,使用resource中的jar包资源作为UrlClassloader(二)同,主要区别在于 这两篇文章侧
阅读全文
摘要:类加载器 classpath 摘要认为: 加载顺序总结 MyClassLoader查看本加载器缓存,native findLoadedClass MyClassLoader交给父加载器loadclass MyClassLoader调用本类的findClass MyClassLoader调用本类的de
阅读全文
摘要:当进行new的时候,使用的是 1 当前代码所在类加载器 2 调用当前代码的代码所在类加载器 本文设计一个案例予以实践: 调用方在AppClassLoader系统类加载器(Reflection.getCallerClass().getClassLoader()) new 代码所在类加载器为MyUrlC
阅读全文
摘要:new操作时调用当前线程的类加载器,还是调用方的类加载器中,有个逻辑问题,显得论据并不充分 根据类加载器顺序-另一种绕开双亲委派的方式,可能以以下的顺序进行 new K(); 拿出当前线程类加载器 **查看本加载器缓存native findLoadedClass,无(因为此前没有findClass过
阅读全文
摘要:1.7 使用resource中的jar包资源作为UrlClassloader 文章1 由此引出maven打包非resources目录打不进去的问题 maven build resource 随笔1 load/find class 与 forname 在static代码块加载的不同 发现forName
阅读全文
摘要:getResources一起加载,URL.openStream public class LcProperty { public static void main(String [] x) throws IOException { } public static String read(String
阅读全文
摘要:参考使用resource中的jar包资源作为UrlClassloader(二)中第3中方式,通过伪造URL,我们终于得以解决内存byte数组直接用URLClassLoader加载的问题,不必将解密的jar包写入磁盘,造成密码泄露问题 package lc2; import lc3.ResourceC
阅读全文
摘要:对于jar中jar,症结的关键在于,这个jar是在内存中的,更具体的,是在jvm的resource中,无法直接使用URLClassLoader 有两种类型方式、4种方法解决: 1 解压式-tomcat 2 3 4 jar中jar-springboot 核心的区别在于,一者从还是磁盘加载jar,一者从
阅读全文