我现在有个简单的需求:web项目里有个action,需要读取最新的一个xml配置文件,如果每次请求都读取一次,效率非常低,所以希望该xml配置文件数据在一个“全局空间”里,并且如果文件更新则自动更新“全局空间”里的xml数据,不能重启Tomcat服务器,大家有没有什么好想法或建议,多多交流!
服务器起来的时候放在内存里 , 每次需要是根据 lastModified 判断文件是否有更新 如果有 重新读取 ######你能不能具体讲述一下,我还是不懂呀!######
没人回啊,算了,我自己回!
现在一般有两种方法,一种是每隔一定的时间轮询检查文件是否修改过;另一种是使用操作系统提供的api,当有文件改变时通知上层应用。
第一种方法的代表有:
1.Apache 的vfs
http://commons.apache.org/vfs/apidocs/org/apache/commons/vfs2/impl/DefaultFileMonitor.html
默认每隔1s检查,见文档:The DefaultFileMonitor is a Thread based polling file system monitor with a 1 second delay.
2.一个国外人写的FileMonitor
http://geosoft.no/software/filemonitor/FileMonitor.java.html
3.还有一个是采用J2EE的listener实现的,不过使用定时器
第二种方法的代表有:
1.JDK7原生的WatchService,见http://www.codeproject.com/Articles/238780/Java-7-listen-for-file-directory-change
2. JNotify,见http://jnotify.sourceforge.net/sample.html
还有一个是JPoller,没研究,见:http://jpoller.sourceforge.net/
lastModified
###### @iman007 : 不是轮询,是每次请求时检查。不过找到你需要的就OK了,呵呵。######我希望做的是服务器运行过程中,替换一个配置文件能自动更新服务器中的相关参数,如果使用轮询定时检查lastModified有些效率低,希望服务器能自动检测到文件改变然后重新读取文件。 JNotify应该还可以!版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。