code: public Object newDriverInstance(CmsParameterConfiguration configuration, String driverName, String driverPoolUrl)
      throws CmsException {
  
          Class<?>[] initParamClasses = {CmsParameterConfiguration.class, String.class, CmsDriverManager.class};
          Object[] initParams = {configuration, driverPoolUrl, this};
  
          Class<?> driverClass = null;
          Object driver = null;
  
          try {
              // try to get the class
              driverClass = Class.forName(driverName);
              if (CmsLog.INIT.isInfoEnabled()) {
                  CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_DRIVER_START_1, driverName));
              }
  
              // try to create a instance
              driver = driverClass.newInstance();
              if (CmsLog.INIT.isInfoEnabled()) {
                  CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_DRIVER_INITIALIZING_1, driverName));
              }
  
              // invoke the init-method of this access class
              driver.getClass().getMethod("init", initParamClasses).invoke(driver, initParams);
              if (CmsLog.INIT.isInfoEnabled()) {
                  CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_DRIVER_INIT_FINISHED_1, driverPoolUrl));
              }
  
          } catch (Exception exc) {
  
              CmsMessageContainer message = Messages.get().container(Messages.ERR_INIT_DRIVER_MANAGER_1);
              if (LOG.isFatalEnabled()) {
                  LOG.fatal(message.key(), exc);
              }
              throw new CmsDbException(message, exc);
  
          }
  
          return driver;
      }
docs: Method to create a new instance of a driver.<p>
  
  @param configuration the configurations from the propertyfile
  @param driverName the class name of the driver
  @param driverPoolUrl the pool url for the driver
  @return an initialized instance of the driver
  @throws CmsException if something goes wrong