在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());
    }
}
View Code

相关文章: