public function runApplication($class_name)
    {
        $this->traceLog('Request timestamp', $this->microtime_start);

        try {
            switch (self::$operation_mode) {
                case self::ENGINE_MODE_STANDALONE:
                    $this->locateHTTPServer();
                    $this->createBuiltInServer();
                    $this->createBuiltInSite();
                    break;
                case self::ENGINE_MODE_HOSTED:
                    $this->registerMainDatabase();
                    $this->locateHTTPServer();
                    $this->createBuiltInServer();
                    $this->locateRunningConfiguration();
                    break;
                case self::ENGINE_MODE_CLUSTERED:
                    $this->registerMainDatabase();
                    $this->locateHTTPServer();
                    $this->locateRunningConfiguration();
                    break;
                default:
            }

            $retval = forward_static_call(array($class_name, 'launch'));
        } catch (Exception $e) {
            $this->nb_error_handler->dumpStack(
                $e->getMessage(), E_CORE_ERROR, $e->getFile(), $e->getLine(), null, $e->getTrace()
            );
            if ($this->isOperationModeStandalone() ||
                $this->isOperationModeStored() ||
                $this->isOperationModeClustered()
            ) {
                nb_displayErrorPage(500, $e);
            }
            $retval = false;
        }

        if (self::isInstantiated()) {
            self::getEngine()->finish();
            /** @todo Implement CNabuEngine Dump Popup Trace action */
            /** @source $nb_engine->dumpPopupTrace(); */
        }

        return $retval;
    }