【问题标题】:Access static resource in other osgi bundle?访问其他 osgi 包中的静态资源?
【发布时间】:2012-07-27 06:46:54
【问题描述】:

我创建了两个 OSGi 包 B1 和 B2 (Equinox)。

在捆绑包 B1 中,我在根目录下有一个目录 WebContent/WEB-INF/WEB.xml

source.. = src/
bin.includes = META-INF/,\.,\WebContent

在 bundle B2 的清单中,我添加了 bundle B1 作为依赖项。我想让WebContent 成为捆绑包 B2 的子树。

注意:

  1. 我无法在 B1 的清单中导出 WebContent,因为它不在 src 文件夹中。
  2. 如果我将WebContent/WEB-INF 放在src 文件夹中,我仍然无法将其导出为WebContent/WEB-INF,因为它不是有效的包名。

【问题讨论】:

  • 是否可以选择将 B1 设为片段?
  • 抱歉,没有遇到问题,但this post 似乎解决了同样的问题
  • @Björn Pollex:不,B1 必须是一个捆绑包。
  • 我其实是想在WebAPP中加入OSGi性质。

标签: java eclipse-plugin osgi bundle equinox


【解决方案1】:

你能得到 B1 捆绑包的参考吗?如果是这样,我认为您可以使用getEntry。例如

Bundle b1 = /* get bundle here */
URL urlToWebXml = b1.getEntry("WebContent/WEB-INF/WEB.xml");

“在此处获取捆绑包”可能会通过您的 B2 捆绑包的激活器访问捆绑包,该激活器可能存储 BundleContext。

【讨论】:

  • 不需要路径中的前导斜杠(实际上严格来说不应该存在)。否则答案是好的。
  • 谢谢尼尔,我编辑了答案。当我写答案时,我不确定是否包含斜线; Javadocs 说任何字符串都是相对于根的,所以我想包括它是多余的。
猜你喜欢
  • 2022-12-04
  • 2010-11-27
  • 2011-12-16
  • 2011-04-01
  • 1970-01-01
  • 2022-06-25
  • 2014-04-27
  • 2012-11-05
  • 2012-02-10
相关资源
最近更新 更多