要对web项目的class文件进行混淆,请问在哪配置可以让tomcat先使用自定义的类加载器?
认证高级PHP讲师
问题描述的不是很清楚不过类加载可以简单给你说下a.Bootstrap ClassLoader/启动类加载器主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.b.Extension ClassLoader/扩展类加载器主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作c.System ClassLoader/系统类加载器主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.d.User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性
tomcat 用的是 WebappClassLoader 加载 app的,不过没看到 server.xml 开放了这个接口。如果要替换,需要修改 tomcat 源码。
还有一个更好的解决方案,用 java agent 来动态替换 class,这样就可以做到对class的加解密。
问题描述的不是很清楚
不过类加载可以简单给你说下
a.Bootstrap ClassLoader/启动类加载器
主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.
b.Extension ClassLoader/扩展类加载器
主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作
c.System ClassLoader/系统类加载器
主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.
d.User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性
tomcat 用的是 WebappClassLoader 加载 app的,不过没看到 server.xml 开放了这个接口。如果要替换,需要修改 tomcat 源码。
还有一个更好的解决方案,用 java agent 来动态替换 class,这样就可以做到对class的加解密。