连接到不同服务器中的许多数据库

问题描述 投票:0回答:1

也许以前有人问过这个问题,但是我还没有找到。

我的问题很简单,我想验证与许多数据库的连接。我用Java创建了一个流程(我正在使用Spring),该流程使用从查询中获取的一些数据创建数据源连接。我只想知道是否有更好的方法或更快的方法。我的过程花了很多时间来验证整个连接(5K附近)。

这是我的代码的样子

public void validateConnections() throws IllegalBlockSizeException, BadPaddingException {
    BasicDataSource dataSource;

    List<Element> elements = dataToCreateDatasourcesRepository.getAllDatas();

    for(Element element : elements) {
        dataSource = new BasicDataSource();
        dataSource.setDriverClassName(Constants.DRIVER_CLASS_NAME_PROP);
        dataSource.setUrl(getConnectionUrl(element.getElementNbr(), element.getCode()));
        dataSource.setUsername(userName);
        dataSource.setPassword(EncryptionAlgorithm.decryptFromHex(password));
        try {
          Connection conn = dataSource.getConnection();
          Statement stmt = conn.createStatement();
          ResultSet rs = stmt.executeQuery(query);
          if(rs == null || !rs.next()) {
            LOG
                .info(
                    "Connection for element [" + element.getElementNbr() + "]." + element.getCode() + " UNSUCCESSFULY ");
          }
          else {
            LOG.info("Connection for element [" + element.getElementNbr() + "]." + element.getCode() + " SUCCESSFULY ");
          }
        }
        catch(Exception e) {
          LOG.info("Connection for element [" + element.getElementNbr() + "]." + element.getCode() + " UNSUCCESSFULY ");
          LOG.error(e);
        }
      }
  }

  public String getConnectionUrl(String elementNbr, String code) {
    return String
        .format(
            dbUrl,
            PREFIX.concat(elementNbr.toString()),
            code.concat(Constants.HOSTNAME),
            PREFIX.concat(elementNbr.toString()),
            code.toLowerCase());
  }
java database database-connection datasource multi-database-connections
1个回答
0
投票

[建立连接是expensive operation,这在服务器端花费大量时间。您正在运行一个循环,很可能会保持空闲状态等待下一个连接。您可以尝试使用thread pool executor并行发送许多连接。

作为旁注,您可能还想使用try-with-resources语句自动关闭结果集,语句和连接。

© www.soinside.com 2019 - 2024. All rights reserved.