- 浏览: 772301 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
jersery client调用REST框架web services服务的一个示例 -
wangyudong:
很多REST Client是不支持自动化测试RESTful A ...
jersery client调用REST框架web services服务的一个示例 -
doubledumbao:
感谢你的代码,在使用中发现两处小问题,已经做了修改,再次感谢。 ...
Java Zip Utils 压缩/解压缩工具包 -
doubledumbao:
package com.ry.messagedigest;
...
Java Zip Utils 压缩/解压缩工具包 -
phrmgb:
对wsdl讲解的很细致,收藏
Web Service (二) WSDL详解
一直使用tomcat开发,只要将<Context docBase="MyTest" path="/MyTest" reloadable="true" /></Host>中的reloadable属性设置成true.Tomcat就能自动监测到某个文件发生了改变,然后重新装载。由于对这个有点兴趣,所有也试着写了一个简单的实现,但对于文件夹下的多个文件监测,除了把每个文件都加入监测器中外,没有更好的思路和方法。大家可以讨论一下:
除件有我测试的整个eclipse工程文件,有兴趣的童鞋们可以看一下.
FileMonitor类的代码如下所示:
public class FileMonitor { private static final FileMonitor instance = new FileMonitor(); private Timer timer; private Map<String, FileMonitorTask> timerEntries; private FileMonitor() { this.timerEntries = new HashMap<String, FileMonitorTask>(); this.timer = new Timer(); } public static FileMonitor getInstance() { return instance; } /** * 对某个文件实行监听 * * @param listener * The file listener * @param filename * The filename to watch * @param period * The watch interval. */ public void addFileChangeListener(FileChangeListener listener, String filename, long period) { this.removeFileChangeListener(filename); FileMonitorTask task = new FileMonitorTask(listener, filename); this.timerEntries.put(filename, task); this.timer.schedule(task, period, period); } /** * 停止对某个文件的监听 * * @param listener * The file listener * @param filename * The filename to keep watch */ public void removeFileChangeListener(String filename) { FileMonitorTask task = (FileMonitorTask) this.timerEntries .remove(filename); if (task != null) { task.cancel(); } } private static class FileMonitorTask extends TimerTask { private FileChangeListener listener; private String filename; private File monitoredFile; private long lastModified; public FileMonitorTask(FileChangeListener listener, String filename) { this.listener = listener; this.filename = filename; this.monitoredFile = new File(filename); if (!this.monitoredFile.exists()) { return; } this.lastModified = this.monitoredFile.lastModified(); } public void run() { long latestChange = this.monitoredFile.lastModified(); if (this.lastModified != latestChange) { this.lastModified = latestChange; //对发生改变的文件调用处理方法 this.listener.fileChanged(this.filename); } } } }
当监听到文件发生改变时处理的类如下所示:
public class ClassFileChangeListener implements FileChangeListener { /* * 当被监听的文件发生改变时,调用此方法 * */ public void fileChanged(String filename) { System.out .println("File " + filename + " modified ,it must reload !"); } }
当web容器启动时,将要监听的文件加入到文件监听器类中,servet类如下所示:
public class InitServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub super.init(config); long period = Long.parseLong(config.getInitParameter("period")); String filename = config.getInitParameter("filename"); if(period > 0 && filename != null && !filename.isEmpty()){ //String realPath = config.getServletContext().getRealPath(""); //String filename = realPath + "\\WEB-INF\\classes\\jdbc.propertis"; FileMonitor.getInstance().addFileChangeListener(new ClassFileChangeListener(), filename, period); } } /** * @see HttpServlet#HttpServlet() */ public InitServlet() { super(); // TODO Auto-generated constructor stub } }
web.xml中的配置如下所示:
<servlet> <description></description> <display-name>InitServlet</display-name> <servlet-name>InitServlet</servlet-name> <servlet-class>servlet.InitServlet</servlet-class> <init-param> <!-- the period of watching file --> <param-name>period</param-name> <!-- milliseconds --> <param-value>1000</param-value> </init-param> <init-param> <param-name>filename</param-name> <param-value>D:/aa.txt</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>
由于使用eclipse开发时,eclipse中的tomcat,将文件部署在了:D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps
下面,如我的这个工程中的jdbc.properties文件部署成了D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\MyTest\WEB-INF\classes\jdbc.propertis,
此时使用此路径创建的File不存在,所以为了方便测试,我将要监听的文件路径作为InitServlet的一个初始化参数了。
除件是整个工程的文件,直接导入eclipse中即可使用。
- MyTest.rar (8.9 KB)
- 下载次数: 186
评论
12 楼
knight_black_bob
2016-03-02
楼主 ,怎么监听 远程 文件夹 ?
11 楼
小勇12
2011-06-22
不晓得是否底层又是用JNI来完成的
10 楼
qiuboboy
2011-06-21
你去找找有个java的开源实现,可以监控文件系统的。
9 楼
liyun_1981
2011-06-21
支持楼主一个,觉得可在fileChanged方法里面加入自定义运行时类加载的逻辑,这样就比较有实用价值了。
PS:楼上几个都没说到点子上。。。
PS:楼上几个都没说到点子上。。。
8 楼
cs624178950
2011-06-20
呵呵!还是不错,,
7 楼
chenchuan
2011-06-20
好像java7里面已经加上了这个功能了 具体的没有用过 模糊的记得Java7新特性监听文件改变
http://blog.csdn.net/jastar/archive/2011/03/18/6259500.aspx
http://blog.csdn.net/jastar/archive/2011/03/18/6259500.aspx
6 楼
ryxxlong
2011-06-19
gzfreeman 写道
好像apache的commons-io库就有可提供FileMonitor的功能阿
谢谢,commons-io库确实有FileMonitor的功能
Commons IO is a library of utilities to assist with developing IO functionality.
There are six main areas included:
Utility classes - with static methods to perform common tasks
Input - useful Input Stream and Reader implementations
Output - useful Output Stream and Writer implementations
Filters - various implementations of file filters
Comparators - various implementations of java.util.Comparator for files
File Monitor - a component for monitoring file system events
5 楼
甄子丹
2011-06-19
apache vfs可以监听文件变化
4 楼
gzfreeman
2011-06-19
好像apache的commons-io库就有可提供FileMonitor的功能阿
3 楼
ryxxlong
2011-06-17
kimmking 写道
1\lastmodified不准
2\1000ms太长了
3\Timer太浪费了
还是等jdk支持操作系统级的fileWatch吧~(jdk7)
2\1000ms太长了
3\Timer太浪费了
还是等jdk支持操作系统级的fileWatch吧~(jdk7)
呵呵,我现在的水平只能想到这,谢谢你的建议
2 楼
kimmking
2011-06-17
1\lastmodified不准
2\1000ms太长了
3\Timer太浪费了
还是等jdk支持操作系统级的fileWatch吧~(jdk7)
2\1000ms太长了
3\Timer太浪费了
还是等jdk支持操作系统级的fileWatch吧~(jdk7)
1 楼
ryxxlong
2011-06-17
竟然没一个人有兴趣,真是杯具
发表评论
-
java 中JSON数据特殊字符的处理
2014-05-05 18:41 6873JSon 数据中的String 传递数据时,需要处理好特殊 ... -
Java Zip Utils 压缩/解压缩工具包
2014-05-05 11:27 6934实际开发中可能会用到压缩或解压缩,底层借助于apache的z ... -
JRE 与 JDK ,JVM client模式与server模式
2012-10-11 20:08 10249本文大部分内容转载自:JRE 与 JDK ,JVM Clien ... -
edtFtp实现FTP工具类
2012-10-11 11:22 1230edtFtp是一个开源的纯Java的FTP客户端类库。由于它实 ... -
Java class文件的JDK编译版本号
2012-10-11 09:30 1815本人转载自新浪博客,原文地址:http://blog.sina ... -
TOMCAT支持J2EE版本问题
2012-09-03 18:33 6990j2ee1.4 支持的是servlet2.4,j ... -
SimpleDateFormat 线程安全的问题
2012-05-25 18:10 1270SimpleDateFormat中的日期 ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-17 08:48 836这篇文章COPY自:http://www.iteye.c ... -
在eclipse中给jar关联相应的源文件(Source)
2011-05-09 17:17 6737以给commons.dbcp.jar关联源文件为例进行说明。 ... -
tomcat的启动内存设置
2011-05-07 17:16 1111转载自:http://blog.csdn.net/chen ... -
java调用sql server存储过程
2011-05-06 17:21 3445为了便于测试,先创建一个简单的表: CREATE TA ... -
session过期问题
2010-12-16 11:43 1219摘自:http://dev.firnow.com/course ... -
awttest
2010-12-06 22:20 0protected void doPost(Htt ... -
java环境变量设置
2010-07-01 22:01 3206windows xp下配置JDK环境变量: 1.安装JD ... -
一个删除指定目录下所有文件及子目录的Java程序
2010-05-04 14:30 6870今天在je上闲逛时,看到很多人分享的一个删除指定目录下所有文件 ... -
Publishing failed with multiple errors和Timeout waiting for Tomcat v5.5的解决方法
2010-04-27 14:59 2183转载自:http://sucre.iteye.com/bl ... -
eclipse注释规范设置
2010-04-13 14:57 1787本文来自CSDN博客,转载请标明出处:http://blog. ... -
String , StringBuffer, StringBuilder的区别
2010-03-03 17:38 3498转载自:http://www.cnblogs.com/liuy ... -
解决一台机器同时运行多个Tomcat服务
2010-03-03 15:36 1253转载自: http://www.cnblog ... -
如何生成javadoc文档
2010-03-03 15:31 5500编写Javadoc 代码 在Java 代码的类、 ...
相关推荐
java一个监听器的例子
android 外部类作为事件监听器类 ,外部类形式的事件监听器不能自由访问创建GUI界面
// 创建一个文件监察器用于处理文件的格式 FileAlterationObserver observer = new FileAlterationObserver(rootDir,fileFilter,null); //设置文件变化监听器 observer.addListener(new FileMonitor()); //创建文件...
1.原理: 当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。... 2.2当事件源上发生操作时,它会调用事件监听器的一个方法,并且调用这个方法时,会传递事件对象过来 2.3事件监听器是由开
2. 对某个源注册一个监听器,此源便成为一个事件源,当事件源上发生某一个动作时,监听器的某个方法将会被调用执行,在执行事件监听器的这个方法时,同时会把事件监听对象传递给此方法,开发人员在监听器中可以拿到...
Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...
本次工程的目标是学习监听器,掌握监听三个对象的创建和销毁方法。 三个对象:rquest,session,...1.自定义实现三个监听器的类 2.使用注解的方法注册监听器 3.部署工程并运行,在控制台会输出相应的信息
定义一个按钮bn,并通过创建匿名内部类实现事件监听bn是否被按下。
对一个文件夹进行实时监控,当文件夹有新的文件出现时,对其做相应的操作
当你将一个类用作事件监听器时,你已经设置好一个特定的事件类型,它会用该类进行监听。接下来的操作是:一个匹配的监听器必须被加入到该组件中 组件被创建之后,可以在组件上调用如下方法来将监听器与它联系起来 ...
Listener监听器 JavaBean Servlet Jsp XML HTML JAVA WEB开发技术 Listener监听器 事件监听器用于对程序中发生的事件进行监听,在监听的过程中会涉及几个重要组成部分: 事件(Event) 事件源 事件处理器 事件监听器...
STRUTS:listener监听器
比如,如果用户A把挂载的一个共享作为Z:盘符,则在Process Monitor中,所有对这个共享的操作都会被显示为相对于驱动器Z:。想在列表中清除文件系统的操作,在Process Monitor工具栏上反选“文件系统”按钮,再次按下...
NULL 博文链接:https://hngmduyi.iteye.com/blog/581150
coffee虽然自带监听文件变化自动编译成js,但一次开一个窗口只能监听一个文件。于是自己写了个vbs脚本,监听某目录下所有coffee文件,如有变化自动编译。 原理是无限循环扫描目录,比对coffee文件MD5值是否变化,...
在开发时遇到一个问题,需要对软...但是由于android不直接提供对软键盘打开与关闭操作的监听器,所以必须自己来写一个关于软键盘打开/关闭的监听器。 原理是通过对OnGlobalLayoutListener()来实现对软键盘的状态监听器
4.36 uucp 指令:将特定文件复制到另一个特定系统 4.37 uulog指令:显示uucp记录信息 4.38 uuname指令:显示uucp远端主机 4.39 uustat指令:显示uucp状态 4.40 uux指令:在远端的uucp主机上运行指令 4.41 wall指令:...
filter:该包中放的MyFileFilter.java是一个文件过滤器,只过滤我们需要的txt文本文件 read:该包中的Read_book.java和File_content.java Read_book 主体类,负责界面设计,以及一些基本的监听事件的处理 File_...
下图所示的驻波比监听器电路是专门为盲人业余无线电爱好者设计的,其目的是让盲人能够根据声音来检查传输线的驻波比,并尽可能把源阻抗与负载阻抗调整到完全匹配。图中的黑粗线是两条6*70mm的薄金属条彼此相距1.5mm...
:第一个Node.js应用 :deepStrictEqual示例 :指定编码 :切分长度 :连接 :比较长度 :解码 :编码 :监听事件 :lambda方式监听事件 :异步模式监听事件 :仅处理事件一次 :为错误事件注册监听器 ...