code: public void initialize() throws SQLException {
      synchronized (lock) {
        source = createConnectionPool();
        try {
          source.initializeFrom(this);
        } catch (Exception e) {
          throw new PSQLException(GT.tr("Failed to setup DataSource."), PSQLState.UNEXPECTED_ERROR,
              e);
        }
  
        while (available.size() < initialConnections) {
          available.push(source.getPooledConnection());
        }
  
        initialized = true;
      }
    }
docs: Initializes this DataSource. If the initialConnections is greater than zero, that number of
  connections will be created. After this method is called, the DataSource properties cannot be
  changed. If you do not call this explicitly, it will be called the first time you get a
  connection from the DataSource.
  
  @throws SQLException Occurs when the initialConnections is greater than zero, but the
  DataSource is not able to create enough physical connections.