`
yaolifei
  • 浏览: 23063 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

自定义ClassLoader在Tomcat中的问题

阅读更多
公司要求做加密,于是上网搜啊,都说加密重要的.class,自定义ClassLoader加载加密的class,其实我感觉也没有用,defineClass时还是要解密。但是其间遇到一个问题一直不知道什么原因:

Jdk1.6  Tomcat5.5
自定义的ClassLoader类:MyClassLoader
待解密的类:LicenseUtils
我用MyClassLoader加载LicenseUtils时的代码:

Class c = loadClass("xx.LicenseUtils"));
Method m = c.getDeclaredMethod("init", new Class[]{});
m.invoke(c.newInstance(), new Object[]{});

LicenseUtils类中init方法:

public void init() {
    System.out.println("init method");
}


这么写是没有问题的,但是如果我在init方法里面调用第三方类(不是系统的类),就会出现ClassNotFoundException,找了半天也不知道什么原因,而且仅仅是在Tomcat里面运行出错,在main方法里面做测试是木有问题的。

public void init() {
    //自定义的类 License
    com.test.encrypt.License lic = new com.test.encrypt.License();
    //如果是第三方的jar包也报错
    System.out.println("init method");
}



我思忖,Java Application 和 Web Application有什么区别呢?
Jdk有三个ClassLoader,利用委派方式加载类,Tomcat定制了自己一系列的ClassLoader来加载类,我自己写
的MyClassLoader继承自Jdk的ClassLoader,Tomcat的WebAppClassLoader继承自URLClassLoader,URLClassLoader又继承自ClassLoader。

查了Apache的Mailing Lists发现有人说Tomcat只能用继承自WebAppClassLoader的ClassLoader

有人遇到过吗?或者看出有什么问题的
分享到:
评论
1 楼 wupuyuan 2011-09-27  
没有尝试过自己的ClassLoad。不过我用过jks,如果不是要加密class,可以用它看看。

相关推荐

    3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4

    3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4

    JSP开发实用技术整理

    13. 自定义ClassLoader 13 14. double保留两位数的两个方案 18 16. 用户输入输出,文件输入输出范例(1) 19 17.以指定符号分割显示 22 17. 单例模式 22 18. 工厂模式 23 19. 读取配置文件(1) 25 20. 根据libName动态...

    springboot参考指南

    在Spring环境中使用YAML暴露属性 iii. 23.6.3. Multi-profile YAML文档 iv. 23.6.4. YAML缺点 vii. 23.7. 类型安全的配置属性 i. 23.7.1. 第三方配置 ii. 23.7.2. 松散的绑定(Relaxed binding) iii. 23.7.3. @...

    Spring.3.x企业应用开发实战(完整版).part2

    7.10.3 在Tomcat下的配置 7.10.4 在其他Web应用服务器下的配置 7.11 小结 第3篇 数据访问 第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 ...

    Spring3.x企业应用开发实战(完整版) part1

    7.10.3 在Tomcat下的配置 7.10.4 在其他Web应用服务器下的配置 7.11 小结 第3篇 数据访问 第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 ...

    Java类加密2.0版本,无限制

    独立的应用程序(Application,自定义main方法),运行java时,带上参数-agentlib:<所在路径>\lanswon Tomcat等JAVA Web Server,修改启动脚本,把执行java的命令行加上参数-agentlib:<所在路径>\lanswon JBOSS等...

    java 面试题 总结

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    day021-反射和注解笔记和代码.rar

    3、Class的实例就看成是Java中我们学过的所有的数据类型在JVM中存在的一种状态(字节码对象) String.class int.class List.class int[].class 1.概念:通过一个全限定类名,获取字节码文件 2...

    Java类加密程序

    自定义main方法),运行java时,带上参数-agentlib:<所在路径>\hidea Tomcat等JAVA Web Server,修改启动脚本,把执行java的命令行加上参数-agentlib:<所在路径>\hidea JBOSS等JAVA Application Server...

    超级有影响力霸气的Java面试题大全文档

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics