// Add the database properties read from disk (not stored
        // in service.properties) into the set seen by booting modules.
    Properties allParams =
            new DoubleProperties(getAllDatabaseProperties(), startParams);
    if (pf != null)
      pf.addPropertySetNotification(this);
      // Boot the ClassFactory, will be per-database or per-system.
      // reget the tc in case someone inadverdently destroyed it 
    bootClassFactory(create, allParams);
        
        dd = (DataDictionary)
            Monitor.bootServiceModule(create, this,
                    DataDictionary.MODULE, allParams);
    lcf = (LanguageConnectionFactory) 
            Monitor.bootServiceModule(
                create, this, LanguageConnectionFactory.MODULE, allParams);
    lf = (LanguageFactory) 
            Monitor.bootServiceModule(
                create, this, LanguageFactory.MODULE, allParams);
    bootResourceAdapter(create, allParams);
    // may also want to set up a check that we are a singleton,
    // or that there isn't already a database object in the system
    // for the same database?
    //
    // We boot the authentication service. There should at least be one
    // per database (even if authentication is turned off) .
    //
    authenticationService = bootAuthenticationService(create, allParams);
    if (SanityManager.DEBUG) {
      SanityManager.ASSERT(
                authenticationService != null,
                "Failed to set the Authentication service for the database");
    }
    // Lastly, let store knows that database creation is done and turn
    // on logging
    if (create && lastToBoot &&
      (startParams.getProperty(Property.CREATE_WITH_NO_LOG) != null))
    {
      createFinished();
    }
    active = true;
        // Create an index statistics update daemon.
        if (dd.doCreateIndexStatsRefresher()) {
            dd.createIndexStatsRefresher(this, allParams.getProperty(
                        Property.PROPERTY_RUNTIME_PREFIX + "serviceDirectory"));
        }
    }