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

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

На событие (пере-)загрузки прикладного кода, возможно выполнить свой код. Для этого, в каталоге со 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