【发布时间】:2015-03-13 06:34:43
【问题描述】:
我有两个 OSGi 包 A 和 B。它们都是使用 API/实现模型创建的。这两个捆绑包都通过蓝图机制激活。两个 API 包都导出接口,而实现包不导出任何内容。只有 A 依赖于 B。
我的问题是,我想将位于 bundle A 中的资源文件名(xml 文件)传递给 Bundle B(在我使用 BundleContext.getServiceReferences() 方法获取 B 之后),然后在 Bundle 中加载资源B 并处理它。我怎样才能做到这一点,甚至可行吗?
我阅读了以下帖子,Neil Bartlett 的回答表明它应该可以工作。
Access resources in another osgi bundle?
但是,当我读到 getEntry、findEntries、getEntrypath 方法时,它们并没有谈论其他捆绑包(或者我误解了它)。他们只谈论片段。
我的问题是,我可以使用上述三种方法中的任何一种来实现我想要的吗?如果是这样,您能否指出其他有答案的线程或一些示例代码?
如果这不可能,我可以使用片段包(仅包含资源)吗?同样,Bundle B 更像是一个提供者,它可以获取任何资源文件并对其进行处理并满足客户的请求(Bundle A)。因此,即使我想使用包片段方法,我也需要 B 加载客户端指定的片段包(仅在需要的基础上)(比如他们给片段包符号名称)。请提供与类似问题或任何示例相关的建议或其他帖子。
【问题讨论】:
标签: osgi