Play Framework: Блокирайте нишката за стартиране на Start

Когато замените onStart в Global, ще блокира ли нишката, изпълняваща процеса на стартиране? С други думи, искам да се уверя, че Play няма да започне, докато не се върне обаждането от onStart.

Ако това не е така, какво е добро решение за извършване на критичен процес на стартиране, който трябва да се случи, преди Play да започне да приема заявки?


person user_1357    schedule 17.11.2014    source източник


Отговори (1)


Да, Global.onStart ще блокира преди първата заявка.

Обектът GlobalSettings в Play е плъгин. Когато приложението се стартира, първо се зареждат маршрутите, след това плъгините се зареждат последователно чрез извикване на метода onStart на всеки. Плъгинът GlobalSettings идва последен в тази инициализация, което гарантира, че всички други плъгини се зареждат първи, така че всички ваши db връзки, кеш и т.н. са налични там.

Инициализацията на приставката трябва да блокира една нишка, за да гарантира, че:

  1. Всички плъгини се инициализират в точния ред, който е желан, за да се предотвратят грешки в реда на инициализиране (ако един плъгин зависи от друг, който се инициализира първи – например плъгинът на базата данни трябва винаги да се инициализира преди плъгина за еволюции).

  2. Всички добавки се инициализират преди приложението да започне да обработва заявки. (В противен случай не бихте могли да гарантирате, че приставката за DB е готова при първата заявка, например).

person Michael Zajac    schedule 17.11.2014