提交 33560f1b 编写于 作者: Y youyong205

modify the config

上级 c9154779
......@@ -69,7 +69,6 @@ import com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig;
import com.dianping.cat.report.task.alert.manager.AlertManager;
import com.dianping.cat.report.task.alert.network.NetworkAlert;
import com.dianping.cat.report.task.alert.network.NetworkAlertConfig;
import com.dianping.cat.report.task.alert.sender.ExceptionPostman;
import com.dianping.cat.report.task.alert.sender.MailSender;
import com.dianping.cat.report.task.alert.sender.Postman;
import com.dianping.cat.report.task.alert.sender.SmsSender;
......@@ -97,6 +96,7 @@ import com.dianping.cat.system.config.ExceptionConfigManager;
import com.dianping.cat.system.config.MetricGroupConfigManager;
import com.dianping.cat.system.config.NetGraphConfigManager;
import com.dianping.cat.system.config.NetworkRuleConfigManager;
import com.dianping.cat.system.config.RouterConfigManager;
import com.dianping.cat.system.config.SystemRuleConfigManager;
import com.dianping.cat.system.config.ThirdPartyConfigManager;
import com.dianping.cat.system.tool.DefaultMailImpl;
......@@ -233,6 +233,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(AlertConfigManager.class).req(ConfigDao.class));
all.add(C(NetGraphConfigManager.class).req(ConfigDao.class));
all.add(C(ThirdPartyConfigManager.class).req(ConfigDao.class));
all.add(C(RouterConfigManager.class).req(ConfigDao.class));
all.add(C(ConfigReloadTask.class).req(MetricConfigManager.class, ProductLineConfigManager.class));
return all;
......@@ -266,29 +267,9 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(AppGraphCreator.class).req(AppDataService.class, CachedMetricReportService.class, DataExtractor.class,
MetricDataFetcher.class).req(BaselineService.class, MetricConfigManager.class,
ProductLineConfigManager.class, MetricGroupConfigManager.class, AlertInfo.class));
// report serivce
all.addAll(new ReportServiceComponentConfigurator().defineComponents());
// task
all.addAll(new TaskComponentConfigurator().defineComponents());
// model service
all.addAll(new ServiceComponentConfigurator().defineComponents());
all.add(C(RemoteMetricReportService.class).req(ServerConfigManager.class));
all.add(C(BusinessAlertConfig.class).req(AlertConfigManager.class));
all.add(C(NetworkAlertConfig.class).req(AlertConfigManager.class));
all.add(C(SystemAlertConfig.class).req(AlertConfigManager.class));
all.add(C(ExceptionAlertConfig.class).req(AlertConfigManager.class));
all.add(C(AlertInfo.class));
all.add(C(DefaultMailImpl.class).req(ServerConfigManager.class));
all.add(C(DataChecker.class, DefaultDataChecker.class));
all.add(C(NetGraphManager.class).req(ServerConfigManager.class, RemoteMetricReportService.class).req(
ReportService.class, NetGraphBuilder.class, AlertInfo.class, NetGraphConfigManager.class));
all.add(C(MailSender.class).req(MailSMS.class));
......@@ -301,33 +282,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(Postman.class).req(ProjectDao.class, MailSMS.class, MailSender.class, WeixinSender.class,
SmsSender.class, AlertTypeManager.class));
all.add(C(BusinessAlert.class)
.req(MetricConfigManager.class, ProductLineConfigManager.class, BaselineService.class, MailSMS.class,
BusinessAlertConfig.class, AlertInfo.class, AlertDao.class)
//
.req(RemoteMetricReportService.class, BusinessRuleConfigManager.class, DataChecker.class)
.req(Postman.class, AlertManager.class));
all.add(C(NetworkAlert.class)
.req(MetricConfigManager.class, ProductLineConfigManager.class, BaselineService.class, MailSMS.class,
NetworkAlertConfig.class, AlertInfo.class, AlertDao.class)
//
.req(RemoteMetricReportService.class, NetworkRuleConfigManager.class, DataChecker.class)
.req(Postman.class, AlertManager.class));
all.add(C(SystemAlert.class)
.req(MetricConfigManager.class, ProductLineConfigManager.class, BaselineService.class, MailSMS.class,
SystemAlertConfig.class, AlertInfo.class, AlertDao.class)
//
.req(RemoteMetricReportService.class, SystemRuleConfigManager.class, DataChecker.class)
.req(Postman.class, AlertManager.class));
all.add(C(AlertExceptionBuilder.class).req(ExceptionConfigManager.class));
all.add(C(ExceptionAlert.class)
.req(ExceptionAlertConfig.class, ExceptionConfigManager.class, AlertExceptionBuilder.class)
.req(ModelService.class, TopAnalyzer.ID).req(ExceptionPostman.class, AlertManager.class));
all.add(C(AlertSummaryExecutor.class).req(AlertSummaryGenerator.class, AlertSummaryManager.class, MailSMS.class)
.req(AlertSummaryDecorator.class, AlertSummaryFTLDecorator.ID));
......@@ -337,29 +293,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(AlertSummaryManager.class).req(AlertSummaryDao.class));
all.add(C(NetGraphConfigManager.class).req(ConfigDao.class));
all.add(C(NetGraphBuilder.class));
all.add(C(NetGraphManager.class).req(ServerConfigManager.class, RemoteMetricReportService.class).req(
ReportService.class, NetGraphBuilder.class, AlertInfo.class, NetGraphConfigManager.class));
// database
all.add(C(JdbcDataSourceDescriptorManager.class) //
.config(E("datasourceFile").value("/data/appdatas/cat/datasources.xml")));
all.addAll(new CatDatabaseConfigurator().defineComponents());
all.addAll(new UserDatabaseConfigurator().defineComponents());
// update project database
all.add(C(ProjectUpdateTask.class)//
.req(ProjectDao.class, HostinfoDao.class));
// web, please keep it last
all.addAll(new WebComponentConfigurator().defineComponents());
// for alarm module
all.addAll(new AlarmComponentConfigurator().defineComponents());
return all;
}
}
package com.dianping.cat.report.task.router;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Constants;
import com.dianping.cat.consumer.state.model.entity.ProcessDomain;
import com.dianping.cat.consumer.state.model.entity.StateReport;
import com.dianping.cat.consumer.state.model.transform.BaseVisitor;
import com.dianping.cat.helper.MapUtils;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.task.spi.ReportTaskBuilder;
public class RouterBuilder implements ReportTaskBuilder {
@Inject
private ReportService m_reportService;
@Override
public boolean buildDailyTask(String name, String domain, Date period) {
Date start = period;
Date end = new Date(start.getTime() + TimeUtil.ONE_DAY);
StateReport report = m_reportService.queryStateReport(Constants.CAT, start, end);
StateReportVisitor visitor = new StateReportVisitor();
visitor.visitStateReport(report);
Map<String, Long> numbers = visitor.getNumbers();
Comparator<Entry<String, Long>> compator = new Comparator<Map.Entry<String, Long>>() {
@Override
public int compare(Entry<String, Long> o1, Entry<String, Long> o2) {
return (int) (o1.getValue() - o2.getValue());
}
};
numbers = MapUtils.sortMap(numbers, compator);
return false;
}
public static class StateReportVisitor extends BaseVisitor {
private Map<String, Long> m_numbers = new HashMap<String, Long>();
@Override
public void visitProcessDomain(ProcessDomain processDomain) {
String domain = processDomain.getName();
long total = processDomain.getTotal();
Long count = m_numbers.get(domain);
if (count == null) {
m_numbers.put(domain, total);
} else {
m_numbers.put(domain, total + count);
}
}
public Map<String, Long> getNumbers() {
return m_numbers;
}
}
@Override
public boolean buildHourlyTask(String name, String domain, Date period) {
throw new RuntimeException("router builder don't support hourly task");
}
@Override
public boolean buildMonthlyTask(String name, String domain, Date period) {
throw new RuntimeException("router builder don't support monthly task");
}
@Override
public boolean buildWeeklyTask(String name, String domain, Date period) {
throw new RuntimeException("router builder don't support weekly task");
}
}
......@@ -76,8 +76,6 @@ public class ReportFacade extends ContainerHolder implements LogEnabled, Initial
@Override
public void initialize() throws InitializationException {
m_reportBuilders = lookupMap(ReportTaskBuilder.class);
System.out.println(m_reportBuilders.size());
}
}
package com.dianping.cat.system.config;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.dal.jdbc.DalNotFoundException;
import org.unidal.helper.Files;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat;
import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;
import com.dianping.cat.core.config.ConfigEntity;
import com.dianping.cat.home.router.entity.RouterConfig;
import com.dianping.cat.home.router.transform.DefaultSaxParser;
public class RouterConfigManager implements Initializable, LogEnabled {
@Inject
private ConfigDao m_configDao;
private int m_configId;
private RouterConfig m_routerConfig;
private Logger m_logger;
private static final String CONFIG_NAME = "routerConfig";
private Map<String, Set<String>> m_configs = new HashMap<String, Set<String>>();
@Override
public void enableLogging(Logger logger) {
m_logger = logger;
}
public RouterConfig getRouterConfig() {
return m_routerConfig;
}
@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_routerConfig = DefaultSaxParser.parse(content);
} catch (DalNotFoundException e) {
try {
String content = Files.forIO().readFrom(
this.getClass().getResourceAsStream("/config/default-router-config.xml"), "utf-8");
Config config = m_configDao.createLocal();
config.setName(CONFIG_NAME);
config.setContent(content);
m_configDao.insert(config);
m_configId = config.getId();
m_routerConfig = DefaultSaxParser.parse(content);
} catch (Exception ex) {
Cat.logError(ex);
}
} catch (Exception e) {
Cat.logError(e);
}
if (m_routerConfig == null) {
m_routerConfig = new RouterConfig();
}
}
public boolean insert(String xml) {
try {
m_routerConfig = DefaultSaxParser.parse(xml);
boolean result = storeConfig();
m_configs.clear();
return result;
} catch (Exception e) {
Cat.logError(e);
m_logger.error(e.getMessage(), e);
return false;
}
}
private boolean storeConfig() {
synchronized (this) {
try {
Config config = m_configDao.createLocal();
config.setId(m_configId);
config.setKeyId(m_configId);
config.setName(CONFIG_NAME);
config.setContent(m_routerConfig.toString());
m_configDao.updateByPK(config, ConfigEntity.UPDATESET_FULL);
} catch (Exception e) {
Cat.logError(e);
return false;
}
}
return true;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<model>
<entity name="router-config" root="true">
<entity-ref name="default-server" type="list" names="default-servers" />
<entity-ref name="domain" type="list" names="domains" />
</entity>
<entity name="default-server">
<attribute name="id" value-type="String" />
<attribute name="weight" value-type="int" />
<attribute name="port" value-type="int" />
<attribute name="enable" value-type="boolean" />
</entity>
<entity name="domain">
<attribute name="id" value-type="String" />
<entity-ref name="server" type="list" names="servers" />
......
......@@ -202,6 +202,15 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.RouterConfigManager</role>
<implementation>com.dianping.cat.system.config.RouterConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.ConfigReloadTask</role>
<implementation>com.dianping.cat.system.config.ConfigReloadTask</implementation>
......@@ -438,3854 +447,145 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.TransactionReportService</role>
<implementation>com.dianping.cat.report.service.impl.TransactionReportService</implementation>
<role>com.dianping.cat.report.task.alert.sender.MailSender</role>
<implementation>com.dianping.cat.report.task.alert.sender.MailSender</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.EventReportService</role>
<implementation>com.dianping.cat.report.service.impl.EventReportService</implementation>
<role>com.dianping.cat.report.task.alert.sender.SmsSender</role>
<implementation>com.dianping.cat.report.task.alert.sender.SmsSender</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.ProblemReportService</role>
<implementation>com.dianping.cat.report.service.impl.ProblemReportService</implementation>
<role>com.dianping.cat.report.task.alert.sender.WeixinSender</role>
<implementation>com.dianping.cat.report.task.alert.sender.WeixinSender</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.MatrixReportService</role>
<implementation>com.dianping.cat.report.service.impl.MatrixReportService</implementation>
<role>com.dianping.cat.report.task.alert.manager.AlertManager</role>
<implementation>com.dianping.cat.report.task.alert.manager.AlertManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.CrossReportService</role>
<implementation>com.dianping.cat.report.service.impl.CrossReportService</implementation>
<role>com.dianping.cat.report.task.alert.sender.Postman</role>
<implementation>com.dianping.cat.report.task.alert.sender.Postman</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
<role>com.dianping.cat.report.task.alert.sender.MailSender</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
<role>com.dianping.cat.report.task.alert.sender.WeixinSender</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
<role>com.dianping.cat.report.task.alert.sender.SmsSender</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.system.config.AlertTypeManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.StateReportService</role>
<implementation>com.dianping.cat.report.service.impl.StateReportService</implementation>
<role>com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder</role>
<implementation>com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.BugReportService</role>
<implementation>com.dianping.cat.report.service.impl.BugReportService</implementation>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator</role>
<role-hint>AlertSummaryFTLDecorator</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.UtilizationReportService</role>
<implementation>com.dianping.cat.report.service.impl.UtilizationReportService</implementation>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator</role>
<role-hint>AlertSummaryFTLDecorator</role-hint>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryFTLDecorator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.ServiceReportService</role>
<implementation>com.dianping.cat.report.service.impl.ServiceReportService</implementation>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
<role>com.dianping.cat.home.dal.report.AlertSummaryDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
<implementation>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphManager</role>
<implementation>com.dianping.cat.report.page.network.nettopology.NetGraphManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.HeavyReportService</role>
<implementation>com.dianping.cat.report.service.impl.HeavyReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.NetTopologyReportService</role>
<implementation>com.dianping.cat.report.service.impl.NetTopologyReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.AlertReportService</role>
<implementation>com.dianping.cat.report.service.impl.AlertReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.TopReportService</role>
<implementation>com.dianping.cat.report.service.impl.TopReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.DependencyReportService</role>
<implementation>com.dianping.cat.report.service.impl.DependencyReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.HeartbeatReportService</role>
<implementation>com.dianping.cat.report.service.impl.HeartbeatReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.impl.MetricReportService</role>
<implementation>com.dianping.cat.report.service.impl.MetricReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.advanced.dal.BusinessReportDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.ReportService</role>
<implementation>com.dianping.cat.report.service.impl.DefaultReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.WeeklyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.MonthlyReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HourlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.TransactionReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.EventReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.ProblemReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.MatrixReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.DependencyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.TopReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.StateReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.CrossReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.HeartbeatReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.MetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.BugReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.HeavyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.ServiceReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.UtilizationReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.NetTopologyReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.impl.AlertReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.DefaultTaskConsumer</role>
<implementation>com.dianping.cat.report.task.DefaultTaskConsumer</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.TaskDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.spi.ReportFacade</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.transaction.TransactionGraphCreator</role>
<implementation>com.dianping.cat.report.task.transaction.TransactionGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.event.EventGraphCreator</role>
<implementation>com.dianping.cat.report.task.event.EventGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.problem.ProblemGraphCreator</role>
<implementation>com.dianping.cat.report.task.problem.ProblemGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.heartbeat.HeartbeatGraphCreator</role>
<implementation>com.dianping.cat.report.task.heartbeat.HeartbeatGraphCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.transaction.TransactionMerger</role>
<implementation>com.dianping.cat.report.task.transaction.TransactionMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.event.EventMerger</role>
<implementation>com.dianping.cat.report.task.event.EventMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.problem.ProblemMerger</role>
<implementation>com.dianping.cat.report.task.problem.ProblemMerger</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.metric.MetricPointParser</role>
<implementation>com.dianping.cat.report.task.metric.MetricPointParser</implementation>
</component>
<component>
<role>com.dianping.cat.report.baseline.BaselineCreator</role>
<implementation>com.dianping.cat.report.baseline.impl.DefaultBaselineCreator</implementation>
</component>
<component>
<role>com.dianping.cat.report.baseline.BaselineService</role>
<implementation>com.dianping.cat.report.baseline.impl.DefaultBaselineService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.BaselineDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.baseline.BaselineConfigManager</role>
<implementation>com.dianping.cat.report.baseline.BaselineConfigManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>metric</role-hint>
<implementation>com.dianping.cat.report.task.metric.MetricBaselineReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.metric.MetricPointParser</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>transaction</role-hint>
<implementation>com.dianping.cat.report.task.transaction.TransactionReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.transaction.TransactionGraphCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.transaction.TransactionMerger</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>event</role-hint>
<implementation>com.dianping.cat.report.task.event.EventReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.event.EventGraphCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.event.EventMerger</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>problem</role-hint>
<implementation>com.dianping.cat.report.task.problem.ProblemReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.problem.ProblemGraphCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.problem.ProblemMerger</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>heartbeat</role-hint>
<implementation>com.dianping.cat.report.task.heartbeat.HeartbeatReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.heartbeat.HeartbeatGraphCreator</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>bug</role-hint>
<implementation>com.dianping.cat.report.task.bug.BugReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>service</role-hint>
<implementation>com.dianping.cat.report.task.service.ServiceReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.DomainManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>matrix</role-hint>
<implementation>com.dianping.cat.report.task.matrix.MatrixReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>cross</role-hint>
<implementation>com.dianping.cat.report.task.cross.CrossReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>state</role-hint>
<implementation>com.dianping.cat.report.task.state.StateReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>alert</role-hint>
<implementation>com.dianping.cat.report.task.alert.exception.AlertReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>heavy</role-hint>
<implementation>com.dianping.cat.report.task.heavy.HeavyReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>utilization</role-hint>
<implementation>com.dianping.cat.report.task.utilization.UtilizationReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.DomainManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>dependency</role-hint>
<implementation>com.dianping.cat.report.task.dependency.DependencyReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportTaskBuilder</role>
<role-hint>NetTopology</role-hint>
<implementation>com.dianping.cat.report.task.network.NetTopologyReportBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.NetGraphConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.spi.ReportFacade</role>
<implementation>com.dianping.cat.report.task.spi.ReportFacade</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction-local</role-hint>
<implementation>com.dianping.cat.report.page.model.transaction.LocalTransactionService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.transaction.HistoricalTransactionService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
<implementation>com.dianping.cat.report.page.model.transaction.CompositeTransactionService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>transaction-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event-local</role-hint>
<implementation>com.dianping.cat.report.page.model.event.LocalEventService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.event.HistoricalEventService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
<implementation>com.dianping.cat.report.page.model.event.CompositeEventService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>event-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem-local</role-hint>
<implementation>com.dianping.cat.report.page.model.problem.LocalProblemService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.problem.HistoricalProblemService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem</role-hint>
<implementation>com.dianping.cat.report.page.model.problem.CompositeProblemService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>problem-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>heartbeat-local</role-hint>
<implementation>com.dianping.cat.report.page.model.heartbeat.LocalHeartbeatService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>heartbeat-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.heartbeat.HistoricalHeartbeatService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>heartbeat</role-hint>
<implementation>com.dianping.cat.report.page.model.heartbeat.CompositeHeartbeatService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>heartbeat-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>matrix-local</role-hint>
<implementation>com.dianping.cat.report.page.model.matrix.LocalMatrixService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>matrix-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.matrix.HistoricalMatrixService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>matrix</role-hint>
<implementation>com.dianping.cat.report.page.model.matrix.CompositeMatrixService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>matrix-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>state-local</role-hint>
<implementation>com.dianping.cat.report.page.model.state.LocalStateService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>state-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.state.HistoricalStateService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>state</role-hint>
<implementation>com.dianping.cat.report.page.model.state.CompositeStateService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>state-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>cross-local</role-hint>
<implementation>com.dianping.cat.report.page.model.cross.LocalCrossService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>cross-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.cross.HistoricalCrossService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>cross</role-hint>
<implementation>com.dianping.cat.report.page.model.cross.CompositeCrossService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>cross-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top-local</role-hint>
<implementation>com.dianping.cat.report.page.model.top.LocalTopService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.top.HistoricalTopService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top</role-hint>
<implementation>com.dianping.cat.report.page.model.top.CompositeTopService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>top-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>dependency-local</role-hint>
<implementation>com.dianping.cat.report.page.model.dependency.LocalDependencyService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>dependency-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.dependency.HistoricalDependencyService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>dependency</role-hint>
<implementation>com.dianping.cat.report.page.model.dependency.CompositeDependencyService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>dependency-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>metric-local</role-hint>
<implementation>com.dianping.cat.report.page.model.metric.LocalMetricService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>metric-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.metric.HistoricalMetricService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>metric</role-hint>
<implementation>com.dianping.cat.report.page.model.metric.CompositeMetricService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>metric-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>logview</role-hint>
<implementation>com.dianping.cat.report.page.model.logview.CompositeLogViewService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hints>
<role-hint>message-historical</role-hint>
<role-hint>logview-historical</role-hint>
</role-hints>
<field-name>m_services</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>message-local</role-hint>
<implementation>com.dianping.cat.report.page.model.logview.LocalMessageService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
<requirement>
<role>com.dianping.cat.storage.dump.MessageBucketManager</role>
<role-hint>local</role-hint>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageCodec</role>
<role-hint>html</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>message-historical</role-hint>
<implementation>com.dianping.cat.report.page.model.logview.HistoricalMessageService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.dump.MessageBucketManager</role>
<role-hint>local</role-hint>
<field-name>m_localBucketManager</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.storage.dump.MessageBucketManager</role>
<role-hint>hdfs</role-hint>
<field-name>m_hdfsBucketManager</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageCodec</role>
<role-hint>html</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.service.CachedReportTask</role>
<implementation>com.dianping.cat.report.service.CachedReportTask</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
<implementation>com.dianping.cat.report.task.alert.RemoteMetricReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.business.BusinessAlertConfig</role>
<implementation>com.dianping.cat.report.task.alert.business.BusinessAlertConfig</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.config.AlertConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.network.NetworkAlertConfig</role>
<implementation>com.dianping.cat.report.task.alert.network.NetworkAlertConfig</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.config.AlertConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.system.SystemAlertConfig</role>
<implementation>com.dianping.cat.report.task.alert.system.SystemAlertConfig</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.config.AlertConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig</role>
<implementation>com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.config.AlertConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
<implementation>com.dianping.cat.report.task.alert.AlertInfo</implementation>
</component>
<component>
<role>com.dianping.cat.system.tool.DefaultMailImpl</role>
<implementation>com.dianping.cat.system.tool.DefaultMailImpl</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.DataChecker</role>
<implementation>com.dianping.cat.report.task.alert.DefaultDataChecker</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.alert.sender.MailSender</role>
<implementation>com.dianping.cat.report.task.alert.sender.MailSender</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.sender.SmsSender</role>
<implementation>com.dianping.cat.report.task.alert.sender.SmsSender</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.sender.WeixinSender</role>
<implementation>com.dianping.cat.report.task.alert.sender.WeixinSender</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.manager.AlertManager</role>
<implementation>com.dianping.cat.report.task.alert.manager.AlertManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.sender.Postman</role>
<implementation>com.dianping.cat.report.task.alert.sender.Postman</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.MailSender</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.WeixinSender</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.SmsSender</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.AlertTypeManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.business.BusinessAlert</role>
<implementation>com.dianping.cat.report.task.alert.business.BusinessAlert</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.business.BusinessAlertConfig</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.BusinessRuleConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.DataChecker</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.Postman</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.manager.AlertManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.network.NetworkAlert</role>
<implementation>com.dianping.cat.report.task.alert.network.NetworkAlert</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.network.NetworkAlertConfig</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.NetworkRuleConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.DataChecker</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.Postman</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.manager.AlertManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.system.SystemAlert</role>
<implementation>com.dianping.cat.report.task.alert.system.SystemAlert</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.system.SystemAlertConfig</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.SystemRuleConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.DataChecker</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.Postman</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.manager.AlertManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder</role>
<implementation>com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.exception.ExceptionAlert</role>
<implementation>com.dianping.cat.report.task.alert.exception.ExceptionAlert</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.task.alert.exception.ExceptionAlertConfig</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.exception.AlertExceptionBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top</role-hint>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.sender.ExceptionPostman</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.manager.AlertManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator</role>
<role-hint>AlertSummaryFTLDecorator</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator</role>
<role-hint>AlertSummaryFTLDecorator</role-hint>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryFTLDecorator</implementation>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertSummaryDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.NetGraphConfigManager</role>
<implementation>com.dianping.cat.system.config.NetGraphConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
<implementation>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphManager</role>
<implementation>com.dianping.cat.report.page.network.nettopology.NetGraphManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.NetGraphConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.dal.jdbc.datasource.JdbcDataSourceDescriptorManager</role>
<implementation>org.unidal.dal.jdbc.datasource.JdbcDataSourceDescriptorManager</implementation>
<configuration>
<datasourceFile>/data/appdatas/cat/datasources.xml</datasourceFile>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>alert</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>alert</logical-table-name>
<physical-table-name>alert</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>alert-summary</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>alert-summary</logical-table-name>
<physical-table-name>alert_summary</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>alteration</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>alteration</logical-table-name>
<physical-table-name>alteration</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>baseline</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>baseline</logical-table-name>
<physical-table-name>baseline</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>daily-report-content</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>daily-report-content</logical-table-name>
<physical-table-name>daily_report_content</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>event</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>event</logical-table-name>
<physical-table-name>event</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>monthly-report-content</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>monthly-report-content</logical-table-name>
<physical-table-name>monthly_report_content</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>topology-graph</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>topology-graph</logical-table-name>
<physical-table-name>topologyGraph</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>weekly-report-content</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>weekly-report-content</logical-table-name>
<physical-table-name>weekly_report_content</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
<implementation>com.dianping.cat.home.dal.report.AlertDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.AlertSummaryDao</role>
<implementation>com.dianping.cat.home.dal.report.AlertSummaryDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.AlterationDao</role>
<implementation>com.dianping.cat.home.dal.report.AlterationDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.BaselineDao</role>
<implementation>com.dianping.cat.home.dal.report.BaselineDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.DailyReportContentDao</role>
<implementation>com.dianping.cat.home.dal.report.DailyReportContentDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.EventDao</role>
<implementation>com.dianping.cat.home.dal.report.EventDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.MonthlyReportContentDao</role>
<implementation>com.dianping.cat.home.dal.report.MonthlyReportContentDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
<implementation>com.dianping.cat.home.dal.report.TopologyGraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.WeeklyReportContentDao</role>
<implementation>com.dianping.cat.home.dal.report.WeeklyReportContentDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>mail-record</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>mail-record</logical-table-name>
<physical-table-name>mailRecord</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>scheduled-report</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>scheduled-report</logical-table-name>
<physical-table-name>scheduledReport</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>scheduled-report-subscription</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>scheduled-report-subscription</logical-table-name>
<physical-table-name>scheduledReportSubscription</physical-table-name>
<data-source-name>cat</data-source-name>
</configuration>
</component>
<component>
<role>com.dianping.cat.home.dal.alarm.MailRecordDao</role>
<implementation>com.dianping.cat.home.dal.alarm.MailRecordDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportDao</role>
<implementation>com.dianping.cat.home.dal.alarm.ScheduledReportDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao</role>
<implementation>com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.dal.jdbc.mapping.TableProvider</role>
<role-hint>dp-admin-login</role-hint>
<implementation>org.unidal.dal.jdbc.mapping.SimpleTableProvider</implementation>
<configuration>
<logical-table-name>dp-admin-login</logical-table-name>
<physical-table-name>DP_AdminLogin</physical-table-name>
<data-source-name>user</data-source-name>
</configuration>
</component>
<component>
<role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
<implementation>com.dianping.cat.home.dal.user.DpAdminLoginDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.product.ProjectUpdateTask</role>
<implementation>com.dianping.cat.report.task.product.ProjectUpdateTask</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.HostinfoDao</role>
</requirement>
</requirements>
</component>
<component>
<role>org.unidal.web.mvc.model.ModuleRegistry</role>
<implementation>org.unidal.web.mvc.model.ModuleRegistry</implementation>
<configuration>
<modules>
<module default="true">com.dianping.cat.report.ReportModule</module>
<module>com.dianping.cat.system.SystemModule</module>
</modules>
</configuration>
</component>
<component>
<role>com.dianping.cat.report.ReportModule</role>
<implementation>com.dianping.cat.report.ReportModule</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.home.Handler</role>
<implementation>com.dianping.cat.report.page.home.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.home.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.home.JspViewer</role>
<implementation>com.dianping.cat.report.page.home.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.consumer.RealtimeConsumer</role>
<implementation>com.dianping.cat.consumer.RealtimeConsumer</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.analysis.MessageAnalyzerManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.statistic.ServerStatisticManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.statistic.ServerStatisticManager</role>
<implementation>com.dianping.cat.statistic.ServerStatisticManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.problem.Handler</role>
<implementation>com.dianping.cat.report.page.problem.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.problem.HistoryGraphs</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.problem.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.DomainGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.JsonBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.problem.HistoryGraphs</role>
<implementation>com.dianping.cat.report.page.problem.HistoryGraphs</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.GraphDao</role>
<implementation>com.dianping.cat.core.dal.GraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
<implementation>com.dianping.cat.core.dal.DailyGraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.problem.JspViewer</role>
<implementation>com.dianping.cat.report.page.problem.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.ServerConfigManager</role>
<implementation>com.dianping.cat.ServerConfigManager</implementation>
</component>
<component>
<role>com.dianping.cat.system.config.DomainGroupConfigManager</role>
<implementation>com.dianping.cat.system.config.DomainGroupConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.core.config.ConfigDao</role>
<implementation>com.dianping.cat.core.config.ConfigDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
<implementation>com.dianping.cat.report.page.PayloadNormalizer</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.JsonBuilder</role>
<implementation>com.dianping.cat.report.page.JsonBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.Handler</role>
<implementation>com.dianping.cat.report.page.transaction.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.HistoryGraphs</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.XmlViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.DomainGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
<field-name>m_service</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.HistoryGraphs</role>
<implementation>com.dianping.cat.report.page.transaction.HistoryGraphs</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.JspViewer</role>
<implementation>com.dianping.cat.report.page.transaction.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.XmlViewer</role>
<implementation>com.dianping.cat.report.page.transaction.XmlViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
<implementation>com.dianping.cat.report.page.transaction.TransactionMergeManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.event.Handler</role>
<implementation>com.dianping.cat.report.page.event.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.HistoryGraphs</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.DomainGroupConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.event.HistoryGraphs</role>
<implementation>com.dianping.cat.report.page.event.HistoryGraphs</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.DailyGraphDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.event.JspViewer</role>
<implementation>com.dianping.cat.report.page.event.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
<implementation>com.dianping.cat.report.page.event.EventMergeManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.heartbeat.Handler</role>
<implementation>com.dianping.cat.report.page.heartbeat.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.graph.GraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.heartbeat.HistoryGraphs</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.heartbeat.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>heartbeat</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.heartbeat.HistoryGraphs</role>
<implementation>com.dianping.cat.report.page.heartbeat.HistoryGraphs</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.GraphDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.heartbeat.JspViewer</role>
<implementation>com.dianping.cat.report.page.heartbeat.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.logview.Handler</role>
<implementation>com.dianping.cat.report.page.logview.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.logview.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>logview</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessagePathBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.logview.JspViewer</role>
<implementation>com.dianping.cat.report.page.logview.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.Handler</role>
<implementation>com.dianping.cat.report.page.model.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>cross-local</role-hint>
<field-name>m_crossService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>dependency-local</role-hint>
<field-name>m_dependencyService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event-local</role-hint>
<field-name>m_eventService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>heartbeat-local</role-hint>
<field-name>m_heartbeatService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>matrix-local</role-hint>
<field-name>m_matrixService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>message-local</role-hint>
<field-name>m_messageService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>metric-local</role-hint>
<field-name>m_metricService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem-local</role-hint>
<field-name>m_problemService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>state-local</role-hint>
<field-name>m_stateService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top-local</role-hint>
<field-name>m_topService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction-local</role-hint>
<field-name>m_transactionService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.service.IpService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.cross.LocalCrossService</role>
<implementation>com.dianping.cat.report.page.model.cross.LocalCrossService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.dependency.LocalDependencyService</role>
<implementation>com.dianping.cat.report.page.model.dependency.LocalDependencyService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.event.LocalEventService</role>
<implementation>com.dianping.cat.report.page.model.event.LocalEventService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.heartbeat.LocalHeartbeatService</role>
<implementation>com.dianping.cat.report.page.model.heartbeat.LocalHeartbeatService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.matrix.LocalMatrixService</role>
<implementation>com.dianping.cat.report.page.model.matrix.LocalMatrixService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.logview.LocalMessageService</role>
<implementation>com.dianping.cat.report.page.model.logview.LocalMessageService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.dump.MessageBucketManager</role>
<role-hint>local</role-hint>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.MessageCodec</role>
<role-hint>html</role-hint>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.metric.LocalMetricService</role>
<implementation>com.dianping.cat.report.page.model.metric.LocalMetricService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.problem.LocalProblemService</role>
<implementation>com.dianping.cat.report.page.model.problem.LocalProblemService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.state.LocalStateService</role>
<implementation>com.dianping.cat.report.page.model.state.LocalStateService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.top.LocalTopService</role>
<implementation>com.dianping.cat.report.page.model.top.LocalTopService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.model.transaction.LocalTransactionService</role>
<implementation>com.dianping.cat.report.page.model.transaction.LocalTransactionService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.storage.BucketManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.message.spi.core.MessageConsumer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.service.IpService</role>
<implementation>com.dianping.cat.service.IpService</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.dashboard.Handler</role>
<implementation>com.dianping.cat.report.page.dashboard.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.dashboard.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
<field-name>m_eventService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
<field-name>m_transactionService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem</role-hint>
<field-name>m_problemService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.JsonBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dashboard.JspViewer</role>
<implementation>com.dianping.cat.report.page.dashboard.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.matrix.Handler</role>
<implementation>com.dianping.cat.report.page.matrix.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.matrix.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>matrix</role-hint>
<field-name>m_service</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.matrix.JspViewer</role>
<implementation>com.dianping.cat.report.page.matrix.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cross.Handler</role>
<implementation>com.dianping.cat.report.page.cross.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.cross.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.DomainManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>cross</role-hint>
<field-name>m_service</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cross.JspViewer</role>
<implementation>com.dianping.cat.report.page.cross.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.DomainManager</role>
<implementation>com.dianping.cat.DomainManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.HostinfoDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.HostinfoDao</role>
<implementation>com.dianping.cat.core.dal.HostinfoDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.core.dal.ProjectDao</role>
<implementation>com.dianping.cat.core.dal.ProjectDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cache.Handler</role>
<implementation>com.dianping.cat.report.page.cache.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
<field-name>m_eventService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.cache.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
<field-name>m_transactionService</field-name>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cache.JspViewer</role>
<implementation>com.dianping.cat.report.page.cache.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.state.Handler</role>
<implementation>com.dianping.cat.report.page.state.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.state.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.state.StateGraphs</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>state</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.state.JspViewer</role>
<implementation>com.dianping.cat.report.page.state.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.state.StateGraphs</role>
<implementation>com.dianping.cat.report.page.state.StateGraphs</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.top.Handler</role>
<implementation>com.dianping.cat.report.page.top.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.top.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.top.JspViewer</role>
<implementation>com.dianping.cat.report.page.top.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
<implementation>com.dianping.cat.system.config.ExceptionConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.metric.Handler</role>
<implementation>com.dianping.cat.report.page.metric.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.metric.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.metric.graph.MetricGraphCreator</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.metric.JspViewer</role>
<implementation>com.dianping.cat.report.page.metric.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
<implementation>com.dianping.cat.consumer.metric.ProductLineConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
<implementation>com.dianping.cat.system.config.MetricGroupConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.metric.graph.MetricGraphCreator</role>
<implementation>com.dianping.cat.report.page.metric.graph.MetricGraphCreator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.DataExtractor</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.MetricDataFetcher</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.CachedMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
<implementation>com.dianping.cat.consumer.metric.MetricConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
<implementation>com.dianping.cat.report.task.alert.AlertInfo</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.Handler</role>
<implementation>com.dianping.cat.report.page.dependency.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>dependency</role-hint>
<field-name>m_dependencyService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>state</role-hint>
<field-name>m_stateService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.ExternalInfoBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>dependency</role-hint>
<field-name>m_service</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.view.DomainNavManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.home.dal.report.TopologyGraphDao</role>
<implementation>com.dianping.cat.home.dal.report.TopologyGraphDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.view.DomainNavManager</role>
<implementation>com.dianping.cat.report.view.DomainNavManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.ExternalInfoBuilder</role>
<implementation>com.dianping.cat.report.page.dependency.ExternalInfoBuilder</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>problem</role-hint>
<field-name>m_problemservice</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>top</role-hint>
<field-name>m_topService</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.externalError.EventCollectManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.externalError.EventCollectManager</role>
<implementation>com.dianping.cat.report.page.externalError.EventCollectManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.EventDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.EventDao</role>
<implementation>com.dianping.cat.home.dal.report.EventDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.JspViewer</role>
<implementation>com.dianping.cat.report.page.dependency.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.externalError.Handler</role>
<implementation>com.dianping.cat.report.page.externalError.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.externalError.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.externalError.EventCollectManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.DomainManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.externalError.JspViewer</role>
<implementation>com.dianping.cat.report.page.externalError.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.statistics.Handler</role>
<implementation>com.dianping.cat.report.page.statistics.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.statistics.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.BugConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.statistics.JspViewer</role>
<implementation>com.dianping.cat.report.page.statistics.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.BugConfigManager</role>
<implementation>com.dianping.cat.system.config.BugConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryExecutor</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryDecorator</role>
<role-hint>AlertSummaryFTLDecorator</role-hint>
<field-name>m_alertSummaryDecorator</field-name>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryGenerator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.AlertDao</role>
<implementation>com.dianping.cat.home.dal.report.AlertDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</role>
<implementation>com.dianping.cat.report.task.alert.summary.AlertSummaryManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.report.AlertSummaryDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.AlertSummaryDao</role>
<implementation>com.dianping.cat.home.dal.report.AlertSummaryDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.alteration.Handler</role>
<implementation>com.dianping.cat.report.page.alteration.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.alteration.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.report.AlterationDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.alteration.JspViewer</role>
<implementation>com.dianping.cat.report.page.alteration.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.report.AlterationDao</role>
<implementation>com.dianping.cat.home.dal.report.AlterationDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.monitor.Handler</role>
<implementation>com.dianping.cat.report.page.monitor.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.monitor.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.JsonBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.monitor.JspViewer</role>
<implementation>com.dianping.cat.report.page.monitor.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.Handler</role>
<implementation>com.dianping.cat.report.page.network.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.network.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.network.graph.NetworkGraphCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.JspViewer</role>
<implementation>com.dianping.cat.report.page.network.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.graph.NetworkGraphCreator</role>
<implementation>com.dianping.cat.report.page.network.graph.NetworkGraphCreator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.DataExtractor</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.MetricDataFetcher</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.CachedMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphManager</role>
<implementation>com.dianping.cat.report.page.network.nettopology.NetGraphManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.NetGraphConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.task.alert.RemoteMetricReportService</role>
<implementation>com.dianping.cat.report.task.alert.RemoteMetricReportService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</role>
<implementation>com.dianping.cat.report.page.network.nettopology.NetGraphBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.system.config.NetGraphConfigManager</role>
<implementation>com.dianping.cat.system.config.NetGraphConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.userMonitor.Handler</role>
<implementation>com.dianping.cat.report.page.userMonitor.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.userMonitor.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.url.UrlPatternConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.userMonitor.CityManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.userMonitor.graph.UserMonitorGraphCreator</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.userMonitor.JspViewer</role>
<implementation>com.dianping.cat.report.page.userMonitor.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.config.url.UrlPatternConfigManager</role>
<implementation>com.dianping.cat.config.url.UrlPatternConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.url.UrlPatternHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.userMonitor.CityManager</role>
<implementation>com.dianping.cat.report.page.userMonitor.CityManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.system.Handler</role>
<implementation>com.dianping.cat.report.page.system.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.system.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.system.graph.SystemGraphCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.system.JspViewer</role>
<implementation>com.dianping.cat.report.page.system.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.system.graph.SystemGraphCreator</role>
<implementation>com.dianping.cat.report.page.system.graph.SystemGraphCreator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.DataExtractor</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.MetricDataFetcher</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.CachedMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cdn.Handler</role>
<implementation>com.dianping.cat.report.page.cdn.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.cdn.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.userMonitor.CityManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.cdn.graph.CdnGraphCreator</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cdn.JspViewer</role>
<implementation>com.dianping.cat.report.page.cdn.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.cdn.graph.CdnGraphCreator</role>
<implementation>com.dianping.cat.report.page.cdn.graph.CdnGraphCreator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.DataExtractor</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.MetricDataFetcher</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.CachedMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.app.Handler</role>
<implementation>com.dianping.cat.report.page.app.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.report.page.app.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.app.AppConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.app.graph.AppGraphCreator</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.app.JspViewer</role>
<implementation>com.dianping.cat.report.page.app.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.config.app.AppConfigManager</role>
<implementation>com.dianping.cat.config.app.AppConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.app.graph.AppGraphCreator</role>
<implementation>com.dianping.cat.report.page.app.graph.AppGraphCreator</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.config.app.AppDataService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.baseline.BaselineService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.DataExtractor</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.MetricDataFetcher</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.chart.CachedMetricReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.config.app.AppDataService</role>
<implementation>com.dianping.cat.config.app.AppDataService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.app.AppDataCommandDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.app.AppConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.app.AppDataCommandDao</role>
<implementation>com.dianping.cat.app.AppDataCommandDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.SystemModule</role>
<implementation>com.dianping.cat.system.SystemModule</implementation>
</component>
<component>
<role>com.dianping.cat.system.page.alarm.Handler</role>
<implementation>com.dianping.cat.system.page.alarm.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.page.alarm.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.page.alarm.RecordManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.page.alarm.ScheduledManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.alarm.JspViewer</role>
<implementation>com.dianping.cat.system.page.alarm.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.alarm.RecordManager</role>
<implementation>com.dianping.cat.system.page.alarm.RecordManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.alarm.MailRecordDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.alarm.MailRecordDao</role>
<implementation>com.dianping.cat.home.dal.alarm.MailRecordDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao</role>
<implementation>com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.alarm.ScheduledManager</role>
<implementation>com.dianping.cat.system.page.alarm.ScheduledManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportSubscriptionDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
<implementation>com.dianping.cat.home.dal.user.DpAdminLoginDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.alarm.ScheduledReportDao</role>
<implementation>com.dianping.cat.home.dal.alarm.ScheduledReportDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.login.Handler</role>
<implementation>com.dianping.cat.system.page.login.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.page.login.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.page.login.service.SigninService</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.login.JspViewer</role>
<implementation>com.dianping.cat.system.page.login.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.login.service.SigninService</role>
<implementation>com.dianping.cat.system.page.login.service.SigninService</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.page.login.service.TokenManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.page.login.service.SessionManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.login.service.TokenManager</role>
<implementation>com.dianping.cat.system.page.login.service.TokenManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.page.login.service.CookieManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.page.login.service.TokenBuilder</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.login.service.CookieManager</role>
<implementation>com.dianping.cat.system.page.login.service.CookieManager</implementation>
</component>
<component>
<role>com.dianping.cat.system.page.login.service.TokenBuilder</role>
<implementation>com.dianping.cat.system.page.login.service.TokenBuilder</implementation>
</component>
<component>
<role>com.dianping.cat.system.page.login.service.SessionManager</role>
<implementation>com.dianping.cat.system.page.login.service.SessionManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.user.DpAdminLoginDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.config.Handler</role>
<implementation>com.dianping.cat.system.page.config.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.page.config.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.aggregation.AggregationConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.metric.MetricConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.ExceptionConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.DomainGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.BugConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.MetricGroupConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.url.UrlPatternConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.BusinessRuleConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.NetworkRuleConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.SystemRuleConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.AlertConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.app.AppConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.view.DomainNavManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
<role>com.dianping.cat.report.task.alert.AlertInfo</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.NetGraphConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.AlertTypeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.config.ThirdPartyConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.config.JspViewer</role>
<implementation>com.dianping.cat.system.page.config.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</role>
<implementation>com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.config.aggregation.AggregationConfigManager</role>
<implementation>com.dianping.cat.config.aggregation.AggregationConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
<requirement>
<role>com.dianping.cat.config.aggregation.AggregationHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.BusinessRuleConfigManager</role>
<implementation>com.dianping.cat.system.config.BusinessRuleConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.NetworkRuleConfigManager</role>
<implementation>com.dianping.cat.system.config.NetworkRuleConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.SystemRuleConfigManager</role>
<implementation>com.dianping.cat.system.config.SystemRuleConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.AlertConfigManager</role>
<implementation>com.dianping.cat.system.config.AlertConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.AlertTypeManager</role>
<implementation>com.dianping.cat.system.config.AlertTypeManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.config.ThirdPartyConfigManager</role>
<implementation>com.dianping.cat.system.config.ThirdPartyConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.plugin.Handler</role>
<implementation>com.dianping.cat.system.page.plugin.Handler</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.page.plugin.JspViewer</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.plugin.JspViewer</role>
<implementation>com.dianping.cat.system.page.plugin.JspViewer</implementation>
<requirements>
<requirement>
<role>org.unidal.web.mvc.view.model.ModelHandler</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.tool.MailSMS</role>
<implementation>com.dianping.cat.system.tool.DefaultMailImpl</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.system.notify.ReportRender</role>
<implementation>com.dianping.cat.system.notify.ReportRenderImpl</implementation>
</component>
<component>
<role>com.dianping.cat.system.notify.ScheduledMailTask</role>
<implementation>com.dianping.cat.system.notify.ScheduledMailTask</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.system.notify.ReportRender</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.tool.MailSMS</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.system.page.alarm.ScheduledManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.alarm.MailRecordDao</role>
</requirement>
</requirements>
</component>
<component>
......
<router-config>
<default-server id="10.1.6.101" weight="1" port="2280" enable="true"/>
<default-server id="10.1.6.101" weight="1" port="2280" enable="false"/>
<default-server id="10.1.6.101" weight="1" port="2280" enable="true"/>
<domain id="Cat">
<server id="10.1.6.101" port="2280"></server>
<server id="10.1.6.102" port="2280"></server>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册