Есть модифицированный
ServiceActivator на базе
AbstractTelminalServiceActivator, в нем в функции
executeCommands перебираю главный + дочерние сервисы. Всё хорошо, до тех пор, пока решил не закрыть по периоду дочерний - он один всего.
Происходит вот что - в активаторе вызываются команды удаления сервиса, а т.к. он действует на главный - то "удаляется" всё. хотя в клиенте пишет что всё ОК. Но это полбеды, делаю синхронизацию чтобы привести в чувства главный, но что происходит - в логах вижу что дочерний тоже оживает. Я его удаляю через клиента - опять команды cancel "удаляют" всё и снова делаю синхронизацию, а он всё равно мелькает в логах. Беру и снова добавляю дочерний с таким же адресом - и вот в клиенте 1 дочерний, а в логах аксеса мелькает 2.
Резюме:
serv.getChildren() в сервис-активаторе после удаления/закрытия по периоду дочерних всё равно их откуда-то берет (из
InetServRuntime видимо). Помогает только рестарт
Access, и то только в случае удаления дочернего, при закрытии по периоду всё равно показывает.
ManadServiceActivator стало быть тоже этим страдает, ибо там аналогичный вызов и перебор есть.
Код:
mq 02-13/23:07:10 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Reload InetServRuntime: 153
mq 02-13/23:07:10 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Removing InetServRuntime: 153
При закрытии по периоду основного сервиса в логах есть вот такое, чего нет при закрытии дочернего. И еще видимо при загрузке дочерних в Runtime не учитывается его период.
Код:
Сервер: вер. 6.0 сборка 1648 от 19.12.2013 17:25:05