簡體   English   中英

如何在多個osgi包之間共享資源

[英]How to share resources between multiple osgi bundles

我有兩個osgi捆綁。

捆綁A(消費者捆綁)

Consumer.java

myService = new MyImpl((InputStream)  Client.class.getClassLoader().getResourceAsStream(DEF_FILE));

DEF_FILE位於src / main / resources中

捆綁B(服務包)

包含服務和實現類。

MyImpl.java

public MyImpl(InputStream inputStream)
{
     try
     {
         readFunction(inputStream);
         LOG.info(" ReadFunction in " + inputStream);
     }
     catch (Exception e)
     {
         LOG.error("Could not define Readfunction in " + inputStream, e);
     }
}

主要目的是讀取另一個bundle中一個bundle中聲明的資源文件。 我可以使用maven-resource-pluginassembly plugin但是我還需要在pom中添加依賴包,由於循環依賴性問題,我不喜歡這種包。 有沒有其他方法可以有效地從一個包到另一個包中讀取文件?

注意:我可能有很多用於服務的消費者包。

對於OSGi應用程序,共享靜態資源聽起來非常低。 根據我的經驗,您只想在捆綁包之間共享服務。 然后,這些服務可以表示存儲在這些靜態資源中的域對象。 使用擴展程序模式,您可以將捆綁中的資源轉換為服務。您可能需要查看擴展程序模式以查看其工作原理。

在Web環境中,這些資源可以是Web資源,在這種情況下,您可以從特殊的servlet提供服務,例如OSGi enRoute Web服務器servlet 這使得添加共享功能變得更加容易。

OSGi非常擅長創建這些抽象,可以在產品發展時節省大量時間。 顯然,您還可以使用完全有效的用例來使用流。

Bundle接口有getResourcegetResources方法。 有關詳細信息,請參閱鏈接的JavaDocs。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM