2013-09-26 50 views
0

我必須在父應用程序和嵌入OSGi之間傳遞參數。我使用Equinox並在我的Launcher類中運行FrameworkFactory的OSGi,然後安裝並啓動捆綁軟件。有可能傳遞對象引用,甚至傳遞一些原始類型來捆綁或服務?在父應用程序和OSGi框架之間傳遞參數

回答

2

啓動框架後,您可以獲取系統包上下文並訪問並調用由框架中的包註冊的服務。必須小心服務類型,因爲它們很可能是從捆綁包加載的,因此這些類型不會直接顯示到啓動代碼中。但是你可以使用反射。或者你可以把這些類型放在框架類加載器中,並通過org.osgi.framework.system.packages.extra你的啓動器設置的框架屬性從系統包中導出它們。

+0

感謝您的回答,但這不是我的問題的解決方案。我想從我的父應用程序類(這將是OSGi框架的啓動器)運行具有特定參數(例如對象引用)的包或服務。您正在討論通過system_packages_extra將整個類發送到系統包,以便在OSGi Framework中具有可見性 - 我不需要它(我通過添加需要將類osgi classpath作爲包來添加的類來解決它)。 –

+0

我可以使用反射來運行帶有參數的啓動器類的服務方法嗎?但是,我如何才能在OSGi框架之外獲得服務類名稱? –

+0

您可以使用反射來調用啓動器中您的類型不可見的服務的方法。您可以傳遞任何可以直接或通過反射創建的參數類型。 –

相關問題