2008-11-11 92 views
4

假設你有一個帶有各種視圖的eclipse插件,這些視圖應該顯示來自將數據推送到視圖的一些OSGi包的數據。我沒有將所有視圖與OSGi包進行通信,而是有一箇中間Facade類,它充當視圖的黑板並管理視圖和其他OSGi包之間的通信 - 這就是理論。如何在eclipse聲明性服務和視圖之間進行通信(ContentProviders)

問題出現了,因爲ui包(包含Views和Facade)使用Declarative Services與另一個包(稱爲DataStore)進行通信。由於Data Store接收來自另一個源的異步數據更新,因此需要將內容推送到Facade(以及其他包(如果可用))。 OSGi實例化Facade以滿足DataStore的DS配置上基數的要求,但視圖由插件的IApplication實現實例化。即使應用程序和Facade是同一個類,我也會得到兩個不知道彼此的獨立實例。

如何啓用這些組件之間的通信(插件應用程序,視圖等和OSGi實例化的Facade)?

回答

1

一個解決方案是使用一個Singleton,並且將一個或兩個應用程序和Facade寄存器與該Singleton一起使用。

但是,我真的不喜歡在這個問題上拋出一個全局變量的想法。這似乎沒有道理 - 這肯定是一個常見問題,所以我假設有一個優雅的解決方案,我只是不知道如何搜索它。

+0

我同意單身人士似乎是一個壞主意。我希望我能提供一個真正的解決方案。 – 2008-11-11 23:35:39

1

你也可以使用Spring DM來連接你的OSGi服務並使用Martin Lippert glue plugin來連接OSGi服務(或者Spring beans)的視圖,好的一點是你不需要編寫任何基於服務API或彈簧API ...

相關問題