2013-06-19 4 views
1

У меня есть 4 услуги. Каждый из них зависит от кого-то другого, например, если запуск службы A может быть B и C, если B начинается, тогда D может начаться. если A-> B и C, если B-> D. Мне удалось создать их метод start() и stop(), но я просто не знаю, как сделать зависимость между ними. Я думал о том, чтобы отправить сервис класса ChechRequirements, который он должен запустить, и список услуг, в которых эта служба зависит, и если этот список равен текущему списку, который он может начать, как другие, перед этой службой. Это хорошая идея, или у вас есть еще одна?зависимость между элементами списка

Спасибо большое

+0

Что должно произойти, когда поток пытается начать, пока его зависимые потоки еще не начались? – sp00m

+0

он просто не должен начинать – njamanjam

ответ

1

Я предлагаю вам полагаться на утвержденных рамок, таких как OSGi (и его реализации Apache Felix).

Если вы хотите по какой-либо причине пребывания на вашей собственной базы, я предлагаю вам разработать и создать управление lifecyle на основе этих шагов:

  1. Остановлено: Сервис присутствует
  2. Неактивный: Сервис инициализировано, но зависимости не доступны
  3. Ready: все условия для запуска действительны (например, зависимости)
  4. Создана служба может обрабатывать запросы

Затем, при запуске службы, которая зависит от другой, вы должны повысить уровень зависимости. И при остановке зависимостей вы должны снизить состояние зависимых сервисов.

Смежные вопросы