code: func Run(port int) {
  	defer func() {
  		if r := recover(); r != nil {
  			RevelLog.Crit("Recovered error in startup", "error", r)
  			RaiseEvent(REVEL_FAILURE, r)
  			panic("Fatal error in startup")
  		}
  	}()
  
  	// Initialize the session logger, must be initiated from this app to avoid
  	// circular references
  	session.InitSession(RevelLog)
  
  	// Create the CurrentEngine instance from the application config
  	InitServerEngine(port, Config.StringDefault("server.engine", GO_NATIVE_SERVER_ENGINE))
  	RaiseEvent(ENGINE_BEFORE_INITIALIZED, nil)
  	InitServer()
  	RaiseEvent(ENGINE_STARTED, nil)
  	// This is needed for the harness to recognize that the server is started, it looks for the word
  	// "Listening" in the stdout stream
  
  	fmt.Fprintf(os.Stdout, "Revel engine is listening on.. %s\n", ServerEngineInit.Address)
  	// Start never returns,
  	CurrentEngine.Start()
  	fmt.Fprintf(os.Stdout, "Revel engine is NOT listening on.. %s\n", ServerEngineInit.Address)
  	RaiseEvent(ENGINE_SHUTDOWN, nil)
  	shutdownHooks.Run()
  	println("\nRevel exited normally\n")
  }
docs: // Run the server.
  // This is called from the generated main file.
  // If port is non-zero, use that.  Else, read the port from app.conf.