2014-12-01 43 views
0

我一直在網上搜索一個關於我將要描述的內容的良好教程的鏈接,但是我還沒有找到它。我的希望是,這裏有人已經有一個想法在哪裏找到它,並可以在這裏發佈鏈接。使用OSGi創建可修改的應用程序

我想知道如何使用的OSGi /春分來構建應用程序(遊戲,商務,或以其他方式),可實現稍後的未知內容添加的庫。

這種想法讓我着迷從我第一次用我的世界鍛造和所有我所要做的就是下降的JAR成很可能確定爲類路徑或東西MODS的目錄。

我第一研究主題中.NET和發現「System.AddIn」和「System.AddIn.Contract」文庫的合適的響應。這裏有一個很好的教程:MSDN - Creating an Extensible Application。這工作得很好。您可以創建定義AddIns類型的接口和合約管道,然後只需將類庫放在正確的目錄中即可添加AddIns。

我現在積極研究如何做到在Java中同樣的事情,我目前正在研究的OSGi插件。然而,到目前爲止我所遇到的所有例子都集中在設計時已知的bundle上。此外,還有「DynamicImport-Package」的對話,但我所看到的資源至今都不滿意。

所以,問題是沒有人知道,討論了滿足特定的接口是未知bundly(類庫)的動態發現和加載「時笑了」的方法的資源嗎?

回答

1

您正在尋找OSGi服務。在OSGi中,您可以在一個包中註冊服務,並在另一個包中使用這些服務。您還可以跟蹤出現在OSGi容器中的服務,並在滿足您的需求時使用它們。

有上解釋瞭如何使用OSGi服務的淨很多教程。例如:http://www.knopflerfish.org/osgi_service_tutorial.html

一個例子,你如何使用它:

  • 您指定的接口
  • 每個插件包必須有接口的實現和包實例化對象註冊爲一個OSGi服務。
  • 您的技術包(可以有插件)會跟蹤實現該接口的所有OSGi服務。
+0

太棒了!我將看看你發佈的文章。我應該能夠在接下來的24小時內給出堅定的迴應。 – MrGoodfix 2014-12-02 02:35:20

+0

感謝您的好評!時間捲起袖子。 – MrGoodfix 2014-12-02 13:19:15

+0

我想爲這個事實後面的讀者添加這個鏈接:http://docs.oracle.com/javase/tutorial/ext/basics/spi.html – MrGoodfix 2014-12-04 03:17:48

0

主要的OSGi API要將OSGi框架嵌入到您的應用程序中,然後動態加載要加載的OSGi包插件庫是org.osgi.framework.launch.Framework。您可能會發現我的https://github.com/vorburger/ch.vorburger.minecraft.osgi/項目的源代碼在這方面感興趣:它將Apache Felix OSGi框架嵌入到Minecraft海綿mod中,並將其他Minecraft mods動態加載爲OSGi包 - 幾乎可以滿足您的要求? ;-)專門查看OSGiFrameworkWrapper課程。你可以或者也可以在沒有OSGi的情況下執行此操作,並且可以親自使用java.lang.ClassLoader,或者使用我的https://github.com/vorburger/HoTea項目。

相關問題