3
回答
JavaWeb Tomcat 怎样实properties文件的实时加载?
开发十年,就只剩下这套Java开发体系了   

期望结果:手动修改properties文件中的该参数值后,不需要重启Tomcat(或重新发布),该新参数值要求立即在程序中生效。

我的主要代码:

URL url=TestClass.class.getClassLoader().getResource("test.properties");
String path=URLDecoder.decode(url.getPath(),"UTF-8");
Properties props=new Properties();
props.load(new FileInputStream(path));

String xxx=props.getProperty("yyy");

以上,当修改了yyy对应的参数值后,取得的xxx值仍然为修改前的值,而当重启Tomcat后,就可以取到修改后的值了!

补充说明:只是修改了properties文件,别的都没修改而重启Tomcat(或重新部署整个项目),感觉这样不值当!

在网上找到一个解决方法:将文件中的数据先读入内存,然后用户修改后再去修改内存中的数据和配置文件中的数据,然后读数据时只需要从内存中读取,但不知道此方法是怎样实现的!

所以,想求知:实时加载properties要如何实现(JavaWeb项目中,重启Tomcat和重新发布项目的方法除外)?





举报
铂金小哥
发帖于4年前 3回/3K+阅
共有3个答案 最后回答: 4年前
现在可以通过修改tomcat配置文件来让服务器自动加载,

  修改tomcat服务器文件 tomcat安装目录--conf--server.xml,在tomcat的<host></host>标签里添加下面这行代码:

  <Context   path= "/myweb "   docBase= "E:\myeclipse9\myweb\WebRoot "   reloadable= "true "/>

  说明:

  1>path:指定拜候该web应用的URL进口;

  2>docBase:指定web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性【默认

  指向tomcat的webapps】的相对于径;要是Web应用是个war文件,则指定war文件的路径。

  3>reloadable:要是这个属性设置为true,Tomcat服务器在运行状况下会监视在WEB-INF/classess和WEB-

  INF/lib目次下的class文件的改动,以及监视web应用的WEB-INF/web.xml文件的改动。要是检测到的class

  文件或者web.xml文件被更新,服务器会自动加载Web应用。该属性的默认值为false.在web应用的开发和调

  试阶段,把reloadable设为true,可以方便对web应用的调试。在web应用正式发布阶段,把reloadable设为

  false,可以减低tomcat的运行负荷,提高Tomcat的运行性能。

--- 共有 1 条评论 ---
铂金小哥谢谢! 4年前 回复
顶部