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

Java 连接到不同服务器中的多个数据库,java,database,database-connection,datasource,multi-database-connections,Java,Database,Database Connection,Datasource,Multi Database Connections,也许以前有人问过这个问题,但我还没找到 我的问题很简单,我想验证与许多数据库的连接。我用Java创建了一个进程(我使用的是Spring),该进程使用从查询中获得的一些数据创建数据源连接。我只是想知道是有更好的方法还是更快的方法。我的过程花了很多时间来验证整个连接(大约5公里) 这就是我的代码的样子 public void validateConnections() throws IllegalBlockSizeException, BadPaddingException { BasicD

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

我的问题很简单,我想验证与许多数据库的连接。我用Java创建了一个进程(我使用的是Spring),该进程使用从查询中获得的一些数据创建数据源连接。我只是想知道是有更好的方法还是更快的方法。我的过程花了很多时间来验证整个连接(大约5公里)

这就是我的代码的样子

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());
  }
public void validateConnections()引发IllegalBlockSizeException,BadPaddingException{
基本数据源数据源;
List elements=dataToCreateDatasourcesRepository.getAllDatas();
for(元素:元素){
dataSource=新的BasicDataSource();
dataSource.setDriverClassName(常量.DRIVER\u CLASS\u NAME\u PROP);
setUrl(getConnectionUrl(element.getElementNbr(),element.getCode());
dataSource.setUsername(用户名);
setPassword(EncryptionAlgorithm.decryptFromHex(密码));
试一试{
Connection conn=dataSource.getConnection();
语句stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(查询);
如果(rs==null | |!rs.next()){
日志
.info(
“元素[“+element.getElementNbr()+”]。“+element.getCode()+“未成功”的连接”;
}
否则{
LOG.info(“元素连接[“+element.getElementNbr()+”]。“+element.getCode()+”成功”);
}
}
捕获(例外e){
LOG.info(“元素连接[“+element.getElementNbr()+”]。“+element.getCode()+”未成功”);
日志错误(e);
}
}
}
公共字符串getConnectionUrl(字符串元素NBR,字符串代码){
返回字符串
.格式(
dbUrl,
前缀.concat(elementNbr.toString()),
code.concat(Constants.HOSTNAME),
前缀.concat(elementNbr.toString()),
code.toLowerCase());
}

建立连接是一项复杂的任务,在服务器端需要花费大量时间。您正在运行一个循环,该循环很可能处于空闲状态,等待下一个连接。您可以尝试使用并行发送多个连接

另外,您可能还希望使用语句自动关闭结果集、语句和连接