示例#1
0
  private void loadDataHosts(Element root) {
    NodeList list = root.getElementsByTagName("dataHost");
    for (int i = 0, n = list.getLength(); i < n; ++i) {
      Element element = (Element) list.item(i);
      String name = element.getAttribute("name");
      if (dataHosts.containsKey(name)) {
        throw new ConfigException("dataHost name " + name + "duplicated!");
      }
      int maxCon = Integer.valueOf(element.getAttribute("maxCon"));
      int minCon = Integer.valueOf(element.getAttribute("minCon"));
      int balance = Integer.valueOf(element.getAttribute("balance"));
      String switchTypeStr = element.getAttribute("switchType");
      int switchType = switchTypeStr.equals("") ? -1 : Integer.valueOf(switchTypeStr);
      String slaveThresholdStr = element.getAttribute("slaveThreshold");
      int slaveThreshold = slaveThresholdStr.equals("") ? -1 : Integer.valueOf(slaveThresholdStr);
      String writeTypStr = element.getAttribute("writeType");
      int writeType =
          "".equals(writeTypStr) ? PhysicalDBPool.WRITE_ONLYONE_NODE : Integer.valueOf(writeTypStr);

      String dbDriver = element.getAttribute("dbDriver");
      String dbType = element.getAttribute("dbType");
      String filters = element.getAttribute("filters");
      String logTimeStr = element.getAttribute("logTime");
      long logTime = "".equals(logTimeStr) ? PhysicalDBPool.LONG_TIME : Long.valueOf(logTimeStr);
      String heartbeatSQL = element.getElementsByTagName("heartbeat").item(0).getTextContent();
      NodeList connectionInitSqlList = element.getElementsByTagName("connectionInitSql");
      String initConSQL = null;
      if (connectionInitSqlList.getLength() > 0) {
        initConSQL = connectionInitSqlList.item(0).getTextContent();
      }
      NodeList writeNodes = element.getElementsByTagName("writeHost");
      DBHostConfig[] writeDbConfs = new DBHostConfig[writeNodes.getLength()];
      Map<Integer, DBHostConfig[]> readHostsMap = new HashMap<Integer, DBHostConfig[]>(2);
      for (int w = 0; w < writeDbConfs.length; w++) {
        Element writeNode = (Element) writeNodes.item(w);
        writeDbConfs[w] =
            createDBHostConf(name, writeNode, dbType, dbDriver, maxCon, minCon, filters, logTime);
        NodeList readNodes = writeNode.getElementsByTagName("readHost");
        if (readNodes.getLength() != 0) {
          DBHostConfig[] readDbConfs = new DBHostConfig[readNodes.getLength()];
          for (int r = 0; r < readDbConfs.length; r++) {
            Element readNode = (Element) readNodes.item(r);
            readDbConfs[r] =
                createDBHostConf(
                    name, readNode, dbType, dbDriver, maxCon, minCon, filters, logTime);
          }
          readHostsMap.put(w, readDbConfs);
        }
      }

      DataHostConfig hostConf =
          new DataHostConfig(
              name, dbType, dbDriver, writeDbConfs, readHostsMap, switchType, slaveThreshold);
      hostConf.setMaxCon(maxCon);
      hostConf.setMinCon(minCon);
      hostConf.setBalance(balance);
      hostConf.setWriteType(writeType);
      hostConf.setHearbeatSQL(heartbeatSQL);
      hostConf.setConnectionInitSql(initConSQL);
      hostConf.setFilters(filters);
      hostConf.setLogTime(logTime);
      dataHosts.put(hostConf.getName(), hostConf);
    }
  }