论坛首页 Java企业应用论坛

javaee 动态更新及获取 classpath 下 *.properties 的问题

浏览 9821 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-25   最后修改:2010-11-25
问题描述:
  首先,这是一个javaee应用,在classpath下有一文件util.properties,我写了一个类CommonUitls,其中有如下方法,
static getProp(String key)
用于获取util.properties中某个键所对应的值,
static setProp(String key, String value)
用于更新util.properties中的对应key的value,当应用启动以后,首页有这样一句代码
<%= CommonUtils.getProp("imageCount")%>
用于得到imageCount的值,在另一个页面我调用
setProp("imageCount","someValue")
,设置值成功,且uitl.properties里imageCount的值确实已经改变了,但是如果我不重启应用服务器的话,再访问首页,
<%= CommonUtils.getProp("imageCount")%>
得到的还是原来的值(如:原来imageCount=4,更新后imageCount=8,不重启服务器得到的还是4),请问这是为什么?难道是类加载有缓存或者什么的?烦请诸位不吝赐教!
   发表时间:2010-11-25  
已解决tomcat reload的问题,真改了我。
0 请登录后投票
   发表时间:2010-11-26  
修改properties文件得重启才可以生效的吧,楼主怎么配置不重启也可以生效?
0 请登录后投票
   发表时间:2010-11-26  
基本上开发机OO有一半是由于热布置产生的.
所以不建议在正式环境下热布署配置文件.

如果真有需要请把数据移动到数据库中
0 请登录后投票
   发表时间:2010-11-26  
查看一下缓存,把取信息的代码再看一下,我觉得问题出在CommonUtils这个类上面。
0 请登录后投票
   发表时间:2010-11-26  
做过,是可以动态更新的,主要是动态获取WEB-INF下面的属性文件,然后通过store方法保存。
当然也可以考虑数据库
0 请登录后投票
   发表时间:2010-11-26  
是tomcat新版本造成的?
0 请登录后投票
   发表时间:2010-11-26  
可以用JMX
0 请登录后投票
   发表时间:2010-11-26  
致楼上诸位仁兄:
    问题已经解决,原因是未设置tomcat热布署reload。另:据说tomcat 6.0.26以前的版本,若设置reload = true,频繁更改web-inf下的配置文件会引起内存泄露,我的6.0.20版本是报了,刚更新两三次就报了,索性存数据库里了。还有一个问题就是${applicationScope.sth},这个应用范围内的属性是不是更改后它也不重读呢?
0 请登录后投票
   发表时间:2010-11-26  
将配置文件写在xml文件中,放在ClassPath的外边,更方便!
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics