📄 loadblacklisttask.java
字号:
package com.infobank.superchannel.daemon.databasecache;import java.util.Hashtable;import java.util.LinkedList;import java.util.List;import java.util.Queue;import org.apache.commons.configuration.Configuration;import com.infobank.superchannel.database.DAO;import com.infobank.superchannel.pojo.BlackList;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.util.DaemonConfiguration;import com.infobank.superchannel.util.DatabaseConnectionPool;/** * @author Xiaoguang Sun * @version 类说明: Reload Blacklist Task */public class LoadBlackListTask implements Runnable{ private static LoadBlackListTask instance=new LoadBlackListTask(); private static boolean enabled=false; private class BlackListSetting{ public String table; public String dataSource; public String entCode; public String tag; } private static List<BlackListSetting> blackListSettings=new LinkedList<BlackListSetting>(); // 数据库缓冲服务器对象 private static DatabaseCacheDaemon daemon=null; // 每次扫描扫描间隔时间(单位毫秒:1000毫秒=1秒) private static int interval=3600000; public static LoadBlackListTask getInstance(){ return instance; } public static void init(DatabaseCacheDaemon daemon){ LoadBlackListTask.daemon=daemon; // 取得黑名单配置 DaemonConfiguration config=DaemonConfiguration.getInstance(); int numberOfBlacklist=0; try{ numberOfBlacklist=config.getMaxIndex("/daemon[@type='DatabaseCache']/task/loader/blacklists/blacklist"); }catch(Exception ex){ } if(numberOfBlacklist==0){ enabled=false; return; } // 扫描间隔 interval=config.getInt("/daemon[@type='DatabaseCache']/task/loader/blacklists/interval",3600000); for(int idx=1;idx<=numberOfBlacklist;++idx){ StringBuilder sb=new StringBuilder(); sb.append("/daemon[@type='DatabaseCache']/task/loader/blacklists/blacklist["); sb.append(idx); sb.append("]/"); String basePath=sb.toString(); BlackListSetting bls=instance.new BlackListSetting(); sb=new StringBuilder(); sb.append(basePath); sb.append("@datasource"); bls.dataSource=config.getString(sb.toString()); if(bls.dataSource==null) bls.dataSource="default"; sb=new StringBuilder(); sb.append(basePath); sb.append("table"); bls.table=config.getString(sb.toString()); sb=new StringBuilder(); sb.append(basePath); sb.append("tag"); bls.tag=config.getString(sb.toString()); sb=new StringBuilder(); sb.append(basePath); sb.append("entcode/pattern"); bls.entCode=config.getString(sb.toString()); blackListSettings.add(bls); } } public void reloadBlackList(DAO dao){ for(BlackListSetting setting:blackListSettings){ BlackList blacklist=dao.getBlackList(setting.dataSource,setting.table,setting.entCode); if(blacklist!=null&&!blacklist.blacklist.isEmpty()){ blacklist.tag=setting.tag; daemon.setBlackList(blacklist); } } } /** * 新信息读取任务执行体 */ public void run() { if(!enabled) return; DAO dao=DAO.getInstance(); while(daemon.isRunnable()){ try{ if(daemon.isPaused()){ Thread.sleep(interval); continue; } } catch (InterruptedException ex){ // interrupted. probably want to exit if(!daemon.isRunnable()){ System.out.println("Stopping blacklist loader"); return; } } try { // sleep first because we did this once in initialization phase Thread.sleep(interval); } catch (Exception e) { System.out.println("Interrupted"); return; } reloadBlackList(dao); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -