Интеграция с сервером#

Код инициализации модуля#

На событие (пере-)загрузки прикладного кода, возможно выполнить свой код. Для этого, в каталоге со scala-кодом модуля, необходимо создать файл с именем {модуль}_ModuleInit.scala, содержащий

object {модуль}_ModuleInit {}

Пример:

Gs3_ModuleInit.scala  
object Gs3_ModuleInit {  
// Размещённый тут код будет выполнен при запуске загрузчика классов
  SBT  
}

Обработка системных событий сервера#

В процессе работы, сервер генерирует ряд системных событий, который можно обработать в прикладном коде. Для этого, необходимо подписаться на события объекта ServerEventSource в код инициализации модуля.

object Gs3_ModuleInit {  
  private val _logger: Logger =
  Logger.Factory.get("ru.bitec.app.gs3.Gs3_ModuleInit")  
  ServerEventSource.subscribeOnInstanceStart(
    (conAccessor) =>_logger.info("OnInstanceStart")
  )  
  ServerEventSource.subscribeOnConnect(
    (conAccessor, btkUserInfo) =>
    _logger.info(s"OnConnect: ${btkUserInfo.name}")
  )  
}

Перечень событий:

  • OnInstanceStart
    Событие возникает после подключения пула sql-соединений сервера приложений к базе данных

  • OnInstanceStop
    Событие возникает перед отключением пула sql-соединений сервера приложений к базе данных

  • OnConnect
    Событие возникает в процессе запуска пользовательской сессиии, после успешной авторизации пользователя в системе. Для запрета подключения пользователя к системе, необходимо выбросить ошибку.

  • OnSessionStart
    Событие возникает после начала сеанса работы, сеанс работы начинается после авторизации, перед открытием выборки выбора приложения

  • OnSessionStop
    Событие возникает перед остановкой сеанса работы

Пример смотри: ru.bitec.app.btk.Btk_ModuleInit