[英]How to share resources between multiple osgi bundles
我有兩個osgi捆綁。
Consumer.java
myService = new MyImpl((InputStream) Client.class.getClassLoader().getResourceAsStream(DEF_FILE));
DEF_FILE位於src / main / resources中
包含服務和實現類。
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-plugin
或assembly plugin
但是我還需要在pom中添加依賴包,由於循環依賴性問題,我不喜歡這種包。 有沒有其他方法可以有效地從一個包到另一個包中讀取文件?
注意:我可能有很多用於服務的消費者包。
對於OSGi應用程序,共享靜態資源聽起來非常低。 根據我的經驗,您只想在捆綁包之間共享服務。 然后,這些服務可以表示存儲在這些靜態資源中的域對象。 使用擴展程序模式,您可以將捆綁中的資源轉換為服務。您可能需要查看擴展程序模式以查看其工作原理。
在Web環境中,這些資源可以是Web資源,在這種情況下,您可以從特殊的servlet提供服務,例如OSGi enRoute Web服務器servlet 。 這使得添加共享功能變得更加容易。
OSGi非常擅長創建這些抽象,可以在產品發展時節省大量時間。 顯然,您還可以使用完全有效的用例來使用流。
Bundle
接口有getResource
和getResources
方法。 有關詳細信息,請參閱鏈接的JavaDocs。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.