31.01.2019, 11:29 | #1 |
Участник
|
Как правильно? куда вставить действия при старте AOS? ax2009, ax2012 и прочие версии
Disclaimer:
Обратите внимание, вопрос сформулирован "Как правильно?" На проекте задача уже решена. Поэтому, пожалуйста, не уводите тему в сторону "быстрых и грязных решений". Задача: = Обновить параметры интеграции с 1С = Обновить url в references внешних вебсервисов = Обновить параметры после рестора рабочей базы в текстовую или другие подобные действия, которые надо выполнить один раз после останова всех кластерных АОСов, но до старта обычных сессий. Вопросы: Куда лучше вставить вызов таких действий? Какими условиями стоит обставить вызов? Какие условия стоит учесть при вызове таких действий? См. также: ClientType::Server Является ли текущее приложение рабочим или тестовым Что получилось исследовать на ax2009:
получается, что в Application.new() вставится можно. Но в этом месте аксапта еще не инициализирована, поэтому в этом месте слишком много ограничений. Альтернативный вариант: предположим, мы решили использовать lazy-инициализацию и дожидаемся пока кто-то запустит неинициализированный функционал, и в момент запуска проверяем была ли выполнена инициализация и инициализируем если нужно. но инициализация может выполняться достаточно долго (несколько секунд при старте АОС роли не играет, а несколько секунд ожидания при работе клиентов - критично) поэтому с lazy-инициализацией с огромной вероятностью получим гонку за ресурсом. следовательно надо будет устраивать какой-то мьютекс и решать прочие параллельные проблемы. Но вдруг кто-то и так решал? Плюсы-минусы? В общем, Куда вставить свой код инициализации/обновления так, чтобы он сработал после инициализации AOS, но до запуска остальных сессий? Последний раз редактировалось mazzy; 31.01.2019 в 11:51. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
Теги |
как правильно |
|
|