2013-06-19 40 views
1

我有4個服務。每個人都依賴於別人,例如,如果服務A開始,那麼可以B和C,如果B開始,那麼D可以開始。如果A-> B和C,如果B-> D,我已經設法創建他們的start()和stop()方法,但我不知道如何依賴它們。我想發送到ChechRequirements類服務,他必須運行和該服務所依賴的服務列表,如果該列表等同於當前正在運行的列表,他可以在該服務之前像其他人一樣啓動。這是一個好主意,或者你有另一個?列表元素之間的依賴關係

謝謝你這麼多

+0

當一個線程嘗試啓動而其依賴線程尚未啓動時會發生什麼? – sp00m

+0

他只是不應該開始 – njamanjam

回答

1

我建議你依靠批准的框架,如OSGi的(和他的阿帕奇菲利克斯實現)。

如果你想以任何理由留在自己的框架,我建議你來設計和建立基於這些步驟的生命週期管理:

  1. 停止:服務是否存在
  2. 無效:服務初始化但依賴關係不可
  3. 預備好了,運行的所有條件都有效(如依賴關係)
  4. 入門:服務可以處理的請求

然後,當啓動一項服務依賴於另一項服務時,您必須調整依賴狀態。當停止依賴時,你必須停止依賴服務的狀態。