Как запретить запуск сервера Grails, если он уже запущен - PullRequest
0 голосов
/ 28 июля 2011

У меня вопрос по применению грааля.У меня есть контроллер, который выполняет большую работу на стороне сервера и может занять несколько минут, чтобы выполнить свою задачу.Я обеспокоен тем, что если пользователь нажмет на обновление во время выполнения кода, он попытается запустить код снова.Как бы мне предотвратить это.ниже приведен некоторый псевдо-код

 def refreshDb = {      
    requeryDataBase()
}

  public void requeryDatabase(){

    ....some long process here
  }

. Итак, как я мог бы предотвратить запуск RequeryDataBase (), если он уже работает?

спасибо за любую помощь или понимание!Ясон

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

Вы должны посмотреть на отправку токена формы с веб-запросом.Он хранит одноразовый токен, поэтому множественные представления не допускаются и могут быть обнаружены.См. Документацию Grails Framework по обработке дублированных представлений для получения более подробной информации .

1 голос
/ 28 июля 2011

Если вы хотите, чтобы несколько пользователей могли использовать контроллер, что-то вроде следующего может работать с использованием объекта сеанса.

  public void requeryDatabase(){
if (session['queryRunning']==false) {
   session['queryRunning']=true
    ....some long process here
session['queryRunning']=false //set to false so the user can execute the controller again
}
 else {
   //Put code to notify the user to be pacient here
}
  }
...