监听文件修改,自动加载xml文件。
来源:互联网 发布:单片机材料做的 编辑:程序博客网 时间:2024/06/12 22:17
转载文章,转载自,公司项目,董亚杰写的。
下面是完整的代码,复制的。
package cn.digitalpublishing.util.debug;import java.io.File;import java.nio.file.FileSystems;import java.nio.file.Paths;import java.nio.file.StandardWatchEventKinds;import java.nio.file.WatchEvent;import java.nio.file.WatchEvent.Kind;import java.nio.file.WatchKey;import java.nio.file.WatchService;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import org.apache.commons.io.FilenameUtils;import cn.digitalpublishing.util.SpringUtils;import com.ingenta.framework.dao.impl.support.DefaultIngentaDao;/** * * @author dongyajie * */@WebServlet(initParams = { @WebInitParam(name = "path", value = "W:\\workspace2\\Editorial\\src\\main\\resources\\sql") }, value = "/DynamicReloadHqlXmlNew", loadOnStartup = 88)public class DynamicReloadHqlXmlNew extends HttpServlet {private static final long serialVersionUID = 1L;private final String ACTION_ENTRY_CREATE = "ENTRY_CREATE";private final String ACTION_ENTRY_DELETE = "ENTRY_DELETE";private final String ACTION_ENTRY_MODIFY = "ENTRY_MODIFY";private String prevFileName = "";private String prevAction = "";private long prevTimeMillis = 0;private final long interval = 500;private DefaultIngentaDao dao;@Overridepublic void init(ServletConfig config) throws ServletException {final String hqlDir = config.getInitParameter("path");dao = (DefaultIngentaDao) SpringUtils.getBean("ingentaDao");ExecutorService service = Executors.newSingleThreadExecutor();service.execute(new Runnable() {@Overridepublic void run() {WatchService watchService = null;try {watchService = FileSystems.getDefault().newWatchService();Paths.get(hqlDir).register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);} catch (Exception e) {}if (watchService != null) {while (true) {try {WatchKey key = watchService.take();List<WatchEvent<?>> events = key.pollEvents();if (!events.isEmpty()) {WatchEvent<?> event = events.get(events.size() - 1);File eventFile = new File(hqlDir, event.context().toString());Kind<?> eventKind = event.kind();String kindName = eventKind.name();if (eventKind.name().equals(ACTION_ENTRY_CREATE)) {kindName = ACTION_ENTRY_MODIFY;}if ((!eventFile.getPath().equals(prevFileName) || !kindName.equals(prevAction)) || ((System.currentTimeMillis() - prevTimeMillis) > interval)) {if (eventFile.isFile()) {if (kindName.equals(ACTION_ENTRY_MODIFY)) {if (FilenameUtils.isExtension(eventFile.getName().toLowerCase(), "xml")) {loadXML(eventFile.getPath());}}}if (kindName.equals(ACTION_ENTRY_DELETE)) {}prevAction = kindName;prevFileName = eventFile.getPath();prevTimeMillis = System.currentTimeMillis();}}if (!key.reset()) {break;}} catch (Exception e) {}}}}});service.shutdown();}private synchronized void loadXML(String filename) {String logfn = FilenameUtils.getName(filename);try {dao.loadResource(new File(filename));System.err.println(logfn + " 加载完成");} catch (Exception e) {System.err.println(logfn + " 加载失败" + e.getMessage());}}}
反正,暂时我是看不懂,感觉太高端了,总有一天我有看懂的时候,,,,,
大神,工作经验5年,编程经验,10年,90后。
0 0
- 监听文件修改,自动加载xml文件。
- Configuration -Properties 文件 修改配置文件自动加载
- Spring Xml配置文件自动加载properties文件
- struts2中如何自动加载xml文件(不用修改配置文件)(转)
- struts2中如何自动加载xml文件(不用修改配置文件)
- java 监听文件修改
- JAVA自动监听文件内容
- 利用grunt ,实现对修改的文件自动加载
- IntelliJ IDEA自动加载修改的文件内容
- IntelliJ IDEA自动加载修改的文件内容
- 修改tomcat的server.xml文件使工程自动部署
- php自动加载文件
- Java加载XML文件
- html 加载 xml 文件
- javascript加载xml文件
- javascript加载xml文件
- xml文件加载
- spring 加载XML文件
- OPC与OPC UA
- 如何看当前本机的网络流量
- 基于Fragment的Android前台服务框架
- ClassyShark工具分析App的应用框架
- tomcat日志配置,log信息如何输出到同一个文件
- 监听文件修改,自动加载xml文件。
- Android studio 下的robotium自动化测试和持续集成
- 【一步一步学NPOI】5.单元格合并与对齐
- 体验 Java 并发 api,用不同方式实现信号量锁(Semaphore)(2)
- 煙青色的雨,煙青色的鼓浪嶼
- 一个Java NIO问题引发的思考
- 关于淘点点面试中碰到的架构问题
- 无法打开MongoDB 28017监控页面
- mysql or查询优化