code: public Object newDriverInstance(
          CmsDbContext dbc,
          CmsConfigurationManager configurationManager,
          String driverName,
          List<String> successiveDrivers)
      throws CmsInitException {
  
          Class<?> driverClass = null;
          I_CmsDriver 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 = (I_CmsDriver)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.init(dbc, configurationManager, successiveDrivers, this);
              if (CmsLog.INIT.isInfoEnabled()) {
                  CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_DRIVER_INIT_FINISHED_0));
              }
  
          } catch (Throwable t) {
              CmsMessageContainer message = Messages.get().container(
                  Messages.ERR_ERROR_INITIALIZING_DRIVER_1,
                  driverName);
              if (LOG.isErrorEnabled()) {
                  LOG.error(message.key(), t);
              }
              throw new CmsInitException(message, t);
          }
  
          return driver;
      }
docs: Gets a new driver instance.<p>
  
  @param dbc the database context
  @param configurationManager the configuration manager
  @param driverName the driver name
  @param successiveDrivers the list of successive drivers
  
  @return the driver object
  @throws CmsInitException if the selected driver could not be initialized