package com.baidu.disconf.client.addons.properties; import java.util.ArrayList; import java.util.List; import java.util.TimerTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 有两种监控方式 * 1. 使用timer, 定时进行check * 2. 当事件触发时,直调用 ReloadConfigurationMonitor.reload */ public class ReloadConfigurationMonitor extends TimerTask { protected static final Logger logger = LoggerFactory.getLogger(ReloadConfigurationMonitor.class); private static List<ReconfigurableBean> reconfigurableBeans = new ArrayList<ReconfigurableBean>(); public static void addReconfigurableBean(ReconfigurableBean reconfigurableBean) { reconfigurableBeans.add(reconfigurableBean); } public void run() { reload(); } public static void reload() { for (ReconfigurableBean bean : reconfigurableBeans) { try { bean.reloadConfiguration(); } catch (Exception e) { logger.warn("while reloading configuration of " + bean, e); } } } }