`
shyboy0358
  • 浏览: 36248 次
文章分类
社区版块
存档分类
最新评论

tomcat下java读取XML不用重启的方法

阅读更多
项目中遇到这样一个问题,客户会经常更改配置文件,而且不想重启tomcat。
下面旧的写法,每回必须重启,而新的写法则不用。

旧:
public void parse() {
    	
        InputStream is = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream(DEFAULT_XML_FILE);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db;
        db = dbf.newDocumentBuilder();
			Document document = db.parse(is);
....
}


新:
public void parse() {
    	
		String path = this.getClass().getClassLoader().getResource("").toString();

			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			DocumentBuilder db;
db = dbf.newDocumentBuilder();
			Document document = db.parse(path + DEFAULT_XML_FILE);
}


原因分析:

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

相关推荐

    spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat

    spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat

    修改java代码以及js无需重启tomcat

    这是因为XML配置文件是Tomcat在启动时加载并解析的,一旦服务器运行起来,这些配置就不会被再次读取,因此必须通过重启来确保最新的配置被应用。 ##### 4.2 热部署的局限性 虽然热部署功能非常实用,但它也存在一定...

    tomcat中部署java项目

    ### Tomcat 中部署 Java 项目的三种方法 在 Tomcat 中部署 Java 项目是常见的服务器配置操作之一。本文将详细介绍在 Tomcat 6.0 版本中部署 Java 项目的三种常见方式,帮助开发者更好地理解每种部署方式的特点及...

    windows下Java-tomcat部署

    - 需要注意的是,从Tomcat 5.0版本开始,server.xml文件只在启动时读取,因此在Tomcat运行时不能修改server.xml来发布Web项目。 3. 在conf/Catalina/localhost目录下添加配置文件: - 对于每一个项目,在Tomcat的...

    quartz实例 自动生成 表达式 动态更新 xml文件 tomcat自动加载

    动态更新XML配置文件是为了在不重启服务的情况下改变任务调度。在传统的Quartz应用中,调度信息通常写入到XML配置文件。然而,一旦配置文件更改,需要重新启动应用才能生效。通过使用Quartz的API,我们可以读取XML...

    Tomcat6不修改server.xml设置虚拟目录的方法

    其中,docBase 是项目文件夹的 web-inf 文件夹的上一层目录,workDir 是 Tomcat 解析 Jsp 转换为 Java 文件,并编译为 class 存放的文件夹,设置在项目文件夹里面,可以避免移植到其他地方首次读取 jsp 文件需要重新...

    监控tomcat的几种方法

    ### 监控Tomcat的几种方法 在IT领域,尤其是对于Web应用的开发与维护人员而言,监控Tomcat服务器的运行状态是确保服务稳定性和优化性能的关键环节。本文将详细介绍几种常用的监控Tomcat的方法,包括使用Tomcat自带...

    Tomcat深入剖析pdf+源码(Tomcat运行原理)

    2. **启动流程**:Tomcat的启动过程涉及服务器配置文件的读取,如server.xml、web.xml等,这些文件定义了服务器的行为和应用的部署信息。Tomcat会根据这些配置启动必要的服务和监听器。 3. **Servlet生命周期**:...

    tomcat下的log4j日志配置

    ### Tomcat 下的 Log4j 日志配置详解 在日常的 Web 开发中,日志记录对于调试问题、监控系统状态以及后期维护来说至关重要。在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发...

    配置tomcat虚拟目录

    - `reloadable`属性设置为`true`表示允许热部署,即在不重启Tomcat的情况下修改应用文件后能够自动重新加载。 ##### 4. 验证配置 最后,将`D:\Test`目录中的`index.html`文件设置为默认首页。此时,可以通过浏览器...

    tomcat_连接池数据库密码加密解密方法

    - 重启Tomcat服务器,确保应用程序能够正常启动,且数据库连接成功建立,证明加密解密逻辑有效。 #### 结论 通过上述步骤,我们不仅提高了数据库连接信息的安全性,还展示了如何在开源项目的基础上进行定制化开发...

    redis整合tomcat8

    标题“redis整合tomcat8”涉及的是在Java Web开发中,如何将Redis缓存系统与Tomcat应用服务器集成,以优化session管理。Redis通常用于缓解服务器内存压力,提高Web应用程序的性能,特别是处理大量并发用户时。以下是...

    成功使用的tomcat

    在开发环境中,我们经常使用Tomcat的热部署功能,即在不重启服务器的情况下更新Web应用。只需将更新后的WAR文件放入`webapps`目录,Tomcat会自动检测并重新部署应用。 总的来说,理解和掌握Tomcat的配置、管理和...

    tomcat7+jedis+common_pool

    默认情况下,Tomcat会将用户的Session信息存储在服务器的内存中,但这种方式存在一些限制,例如单台服务器的负载能力有限,服务器重启会导致Session丢失。 为了解决这些问题,我们可以将Session信息保存到外部持久...

    tomcat6 源代码

    Tomcat会自动将JSP文件编译为Java Servlet类,存储在`work`目录下。每次JSP修改后,Tomcat都会重新编译。执行时,就像普通的Servlet一样,通过RequestDispatcher进行转发或包含。 6. **部署与管理**: Tomcat支持...

    java搜索系统solr部署tomcat实战

    - 将Solr的配置文件复制到`solr.home`目录下,以便Solr可以读取这些配置。 - 特别是`conf`目录下的核心配置文件如`solrconfig.xml`和`schema.xml`。 8. **重启Tomcat** - 关闭并重新启动Tomcat服务,以使更改...

    Tomcat For Eclipse插件及其安装使用方法

    5. **配置管理**:可以编辑Tomcat服务器的配置文件,如server.xml,无需离开Eclipse。 **二、Tomcat For Eclipse插件的安装** 1. **Eclipse Marketplace**:打开Eclipse,点击“Help” -> “Eclipse Marketplace”...

    Tomcat虛擬目錄設定

    在IT行业中,Tomcat是一个广泛使用的开源Java Servlet容器,它主要负责执行Java Web应用程序,包括Servlet和JSP。当我们谈论“Tomcat虚拟目录设定”时,我们是指在Tomcat服务器上配置一个或多个额外的访问路径,这些...

    tomcat-user的管理

    在IT行业中,Tomcat是一款广泛使用的轻量级Java应用服务器,尤其在处理Servlet和JSP应用方面表现出色。本文将深入探讨如何在Linux环境中对Tomcat 6进行用户管理,特别是涉及配置`server.xml`文件的过程。这个过程...

    关于tomcat7无法登陆manager问题解决办法

    这是因为Tomcat会在启动时读取这些配置文件,所以任何更改都需要在重启后生效。 6. **验证配置:** 重启后,再次尝试访问`http://localhost:8080/manager/html`,使用新的用户名和密码登录,应该可以正常访问...

Global site tag (gtag.js) - Google Analytics