论坛首页 Java企业应用论坛

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

浏览 9823 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-26  
BestUpon 写道
将配置文件写在xml文件中,放在ClassPath的外边,更方便!

试给一例。能动态修改吗?
0 请登录后投票
   发表时间:2010-11-26  
storm_code 写道
BestUpon 写道
将配置文件写在xml文件中,放在ClassPath的外边,更方便!

试给一例。能动态修改吗?

当然能动态改变了,不涉及JAVA的编译文件,就像你给给Tomcat 项目下的目录中防止一个文件一样,不用重新启动tomcat,就可以在浏览器中访问一样。做好约定就好了,比如文件名,xml格式,目录地址等等,写好工具类随时可以解析了!
0 请登录后投票
   发表时间:2010-11-27  
BestUpon 写道
storm_code 写道
BestUpon 写道
将配置文件写在xml文件中,放在ClassPath的外边,更方便!

试给一例。能动态修改吗?

当然能动态改变了,不涉及JAVA的编译文件,就像你给给Tomcat 项目下的目录中防止一个文件一样,不用重新启动tomcat,就可以在浏览器中访问一样。做好约定就好了,比如文件名,xml格式,目录地址等等,写好工具类随时可以解析了!

修改冲突就悲剧了.
0 请登录后投票
   发表时间:2010-11-28   最后修改:2010-11-28
storm_code 写道
致楼上诸位仁兄:
    问题已经解决,原因是未设置tomcat热布署reload。另:据说tomcat 6.0.26以前的版本,若设置reload = true,频繁更改web-inf下的配置文件会引起内存泄露,我的6.0.20版本是报了,刚更新两三次就报了,索性存数据库里了。还有一个问题就是${applicationScope.sth},这个应用范围内的属性是不是更改后它也不重读呢?

tomcat的reload设置只是会让你修改文件后 自动重启整个应用而已,如果想做到修改某个配置文件准即时生效的话,我知道的有两种方法:一是写线程定时去查看这个配置文件是否更新(这个比较简单,推荐使用);二是重写classloader,这样的话即使修改了某个class也能即时生效了,但这个相对比较麻烦。
0 请登录后投票
   发表时间:2010-12-02  
lin5061 写道
storm_code 写道
致楼上诸位仁兄:
    问题已经解决,原因是未设置tomcat热布署reload。另:据说tomcat 6.0.26以前的版本,若设置reload = true,频繁更改web-inf下的配置文件会引起内存泄露,我的6.0.20版本是报了,刚更新两三次就报了,索性存数据库里了。还有一个问题就是${applicationScope.sth},这个应用范围内的属性是不是更改后它也不重读呢?

tomcat的reload设置只是会让你修改文件后 自动重启整个应用而已,如果想做到修改某个配置文件准即时生效的话,我知道的有两种方法:一是写线程定时去查看这个配置文件是否更新(这个比较简单,推荐使用);二是重写classloader,这样的话即使修改了某个class也能即时生效了,但这个相对比较麻烦。

请问,写线程监视那个方法在监测到有改变以后怎么让它即时生效呢?即怎么让其加载进去呢?
0 请登录后投票
   发表时间:2010-12-02   最后修改:2010-12-03
storm_code 写道
lin5061 写道
storm_code 写道
致楼上诸位仁兄:
    问题已经解决,原因是未设置tomcat热布署reload。另:据说tomcat 6.0.26以前的版本,若设置reload = true,频繁更改web-inf下的配置文件会引起内存泄露,我的6.0.20版本是报了,刚更新两三次就报了,索性存数据库里了。还有一个问题就是${applicationScope.sth},这个应用范围内的属性是不是更改后它也不重读呢?

tomcat的reload设置只是会让你修改文件后 自动重启整个应用而已,如果想做到修改某个配置文件准即时生效的话,我知道的有两种方法:一是写线程定时去查看这个配置文件是否更新(这个比较简单,推荐使用);二是重写classloader,这样的话即使修改了某个class也能即时生效了,但这个相对比较麻烦。

请问,写线程监视那个方法在监测到有改变以后怎么让它即时生效呢?即怎么让其加载进去呢?


Java 暂时不支持OS的File Change Notification,Java 7的 I/O 2.0可以.

可以利用JNI来做!
0 请登录后投票
   发表时间:2010-12-02  
FileWatch, native\.net才有,哎,
jni用钩子挂吧。
0 请登录后投票
   发表时间:2010-12-03  
jna is good!
0 请登录后投票
   发表时间:2010-12-03  
skzr.org 写道
jna is good!


JNA只是一个JNI的包装吧!
0 请登录后投票
论坛首页 Java企业应用版

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