在CAT中,有非常多的配置去指导监控的行为,每个配置都有相应的配置管理类来管理,都有一个配置名, 配置在数据库或者配置文件中都是以xml格式存储,在运行时会被解析到具体实体类存储。我们选取一个配置的初始化代码来分析:
public class ServerFilterConfigManager implements Initializable { @Inject protected ConfigDao m_configDao; private volatile ServerFilterConfig m_config; private static final String CONFIG_NAME = "serverFilter"; @Override public void initialize() throws InitializationException { try { Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL); String content = config.getContent(); m_configId = config.getId(); m_modifyTime = config.getModifyDate().getTime(); m_config = DefaultSaxParser.parse(content); } catch (DalNotFoundException e) { try { String content = m_fetcher.getConfigContent(CONFIG_NAME); Config config = m_configDao.createLocal(); config.setName(CONFIG_NAME); config.setContent(content); m_configDao.insert(config); m_configId = config.getId(); m_config = DefaultSaxParser.parse(content); } catch (Exception ex) { Cat.logError(ex); } } catch (Exception e) { Cat.logError(e); } if (m_config == null) { m_config = new ServerFilterConfig(); } Threads.forGroup("cat").start(new ConfigReloadTask()); } }