# File lib/cgikit/application.rb, line 386
    def run( command_or_request = nil, response = nil )
      if CGIKit.const_defined?(:Command) and \
        CGIKit.const_get(:Command) === command_or_request then
        request = command_or_request.request
      else
        request = command_or_request
      end

      set_adapter_and_handler
      @adapter.run(request, response) do |request|
        set_attributes_from_request(request)
        request.request_handler_key = \
        @default_request_handler.request_handler_key(request)

        begin  
          handler = request_handler(request.request_handler_key)
          request.context_id = handler.context_id(request)
          response = handler.handle_request(request)

        rescue Exception => e
          # create context without session
          request.session_id = nil
          context = @context_class.new(request, self)
          begin
            response = handle_error(e, context)
          rescue Exception => e
            # trap error occured by customized handle_error 
            response = default_error_page(e, context)
          end
        end

        response
      end
      response
    end