`
wj_126mail
  • 浏览: 130131 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tomcat中用classloader重新加载配置文件

    博客分类:
  • java
 
阅读更多
tomcat中用classloader重新加载配置文件:
tomcat中从current thead中获取的class加载器为tomcat提供的WebappClassLoader,此classloader提供的getResourceAsStream方法会先根据资源路径到其已加载资源中查找,若找到则直接返回。反之则由classloader加载后返回,因此再资源文件更新以后,classloader不能侦测到,返回的输入流对应的资源文件为第一次加载的文件;
稍做改变可避免此问题:
先调用classloader的:public URL getResource(String name)
根据返回的URL再获取输入流,即避免了缓存的问题;


	@SuppressWarnings("unchecked")
17
public Class loadClass(String classPath, String className)
18
    throws ClassNotFoundException {
19
   try {
20
    String url = classPathParser(classPath)
21
      + classNameParser(className);
22
    System.out.println(url);
23
    URL myUrl = new URL(url);
24
    URLConnection connection = myUrl.openConnection();
25
    InputStream input = connection.getInputStream();
26
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
27
    int data = input.read();
28
    while (data != -1) {
29
     buffer.write(data);
30
     data = input.read();
31
    }
32
    input.close();
33
    byte[] classData = buffer.toByteArray();
34
    return defineClass(noSuffix(className), classData, 0,
35
      classData.length);
36
   } catch (MalformedURLException e) {
37
    e.printStackTrace();
38
   } catch (IOException e) {
39
    e.printStackTrace();
40
   }
41
   return null;
42
}


分享到:
评论

相关推荐

    Tomcat 5.0.18 ClassLoader source code insight

    3. **Common ClassLoader**:Tomcat的Common ClassLoader,加载`$CATALINA_BASE/common/lib`目录下的JAR文件,这些类库对所有Web应用都可见。 4. **Webapp ClassLoader**:每个Web应用程序都有自己的Webapp ...

    tomcat 类加载机制 —— ClassLoader

    在Tomcat中,我们可以通过配置`catalina.properties`文件和`server.xml`文件来调整类加载策略,例如设置自定义的类加载顺序或启用共享类加载器。 此外,Tomcat还支持热部署,即在不重启服务器的情况下更新Web应用的...

    ClassLoader类加载机制和原理详解

    ClassLoader根据全限定名来确定类的唯一性,并加载对应的类文件。 7. 反射与类加载 Java反射API允许在运行时动态获取类的信息并操作对象。在反射过程中,如果没有加载目标类,那么会触发ClassLoader的加载机制。 ...

    使用classloader动态加载Class

    在Java编程语言中,类加载器(ClassLoader)是运行时环境的核心组成部分,它负责将类的字节码从各种来源(如JAR文件、网络、内存等)加载到Java虚拟机(JVM)中,使得程序能够运行。本文将深入探讨“使用classloader...

    java类加载器-tomcat中的类加载器

    4. 最后,如果所有父类加载器都未能加载,Catalina ClassLoader才加载Tomcat自身的类。 VSD文件可能包含一个流程图,详细描绘了Tomcat类加载器的工作流程和关系,这对于理解类加载机制非常有帮助。通过阅读和分析该...

    Spring中使用classpath加载配置文件浅析

    在Spring框架中,classpath加载配置文件是应用开发中常见的操作。Spring框架提供了灵活的方式来加载位于classpath中的XML配置文件,这对于项目的模块化和可维护性至关重要。本文将详细分析Spring通过classpath加载...

    Tomcat加载顺序

    ### Tomcat加载顺序详解 Apache Tomcat作为一款广泛使用的开源Servlet容器,其类加载机制是理解和维护基于Tomcat的应用程序的重要部分。Tomcat的类加载器遵循特定的加载顺序,确保了不同应用间的隔离性和资源的正确...

    Tomcat研究之ClassLoader.pdf

    本文旨在深入剖析Tomcat中特有的类加载器(ClassLoader)体系结构,帮助读者理解Tomcat如何管理和加载不同类型的类库。 #### 二、Tomcat的ClassLoader体系结构 Tomcat采用了独特的类加载机制来处理不同的类库加载...

    【图解版】深入分析ClassLoader类加载工作机制

    【图解版】深入分析ClassLoader类加载工作机制,从原理到JVM的装载过程,详情分析了ClassLoader加载类以及自定义类加载器的过程,不可用于商业用途,如有版权问题,请联系删除!

    tomcat类加载器

    类加载器在Tomcat中的配置可以通过`conf/catalina.properties`和`conf/context.xml`等文件进行调整。例如,可以通过修改`common.loader`、`shared.loader`和`context.loader`属性来改变类的加载顺序和来源。 在深入...

    ClassLoader类加载器

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。了解和掌握ClassLoader的工作原理以及如何自定义ClassLoader对于深入理解Java应用程序的运行机制非常有帮助。以下是对...

    ClassLoader动态加载dex

    当我们谈论"ClassLoader动态加载dex"时,实际上是指在Android应用程序运行时,通过自定义的ClassLoader来动态加载`.dex`(Dalvik Executable)文件,这是Android程序的字节码格式。这种技术在进行热修复、插件化或者...

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

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

    Tomcat启动时类加载顺序

    Tomcat通过自定义的类加载器实现了特定的类加载顺序,以确保能够正确处理不同来源的类文件,避免类的重复加载和类版本冲突问题。以下是Tomcat启动过程中类加载的具体顺序: #### 三、类加载顺序详述 1. **Bootstrap...

Global site tag (gtag.js) - Google Analytics