【问题标题】:OBR server implementationOBR 服务器实现
【发布时间】:2016-09-06 16:53:46
【问题描述】:

我在玩 OSGi。据我了解,为了安装和启动一个包,你需要已经解决了它的依赖关系。由于手动安装其直接(和间接)依赖项可能很痛苦,因此引入了 OBR。

我使用 Felix 作为 OSGi 框架实现,我想通过 OBR(即 guava 库)自动解决我的包的依赖关系。出于这个原因,我在客户端上使用org.apache.felix.bundlerepository

我不确定在服务器端做什么。我找不到有关该做什么的可靠信息。我确信可以在服务器上轻松配置 Felix 以用作“OBR 服务器”,但我不知道该怎么做。 你能帮帮我吗?代码将不胜感激。如果您不能发布代码,至少可以告诉我成功设置存储库所需的一般步骤(或链接资源)(例如 felix 框架或其他实现此类功能的软件所需的包)。

我现在的设置:

  • 费利克斯;
  • 日蚀霓虹灯;
  • Eclipse 的 Maven (1.7);

感谢大家的回复!

【问题讨论】:

  • “在服务器端”是什么意思?您想知道如何将 bundle 部署到 OSGi 实例,或者如何设置一个存储库,在解决依赖关系时可以从其中获取 bundle 包,例如从 maven 存储库?
  • 对不起,如果我不清楚。我想设置一个存储库,我可以在其中从 OSGi 实例获取捆绑包以解决依赖关系。

标签: java osgi obr


【解决方案1】:

Sonartype Nexus 2.13 有一个 OBR 插件,它允许您提供与 OBR 兼容的存储库。它还可以用于代理现有的 Maven 存储库。

但是,在设置自己的存储库之前,您可能还想看看bndtools 及其解决依赖关系的方法。 Bndtools 还允许您依赖不明确支持 OBR 的现有 Maven 存储库。有一个guide on how to work with Maven,解释了他们的方法。

【讨论】:

  • 我已经在使用 BND 工具(特别是 maven-bundle-plugin)在我的本地 maven 存储库中使用我正在开发的包更新我的 OBR 存储库。但是第三方捆绑包(例如 com.google.guava)呢?下载源代码(如果可用)、创建一个 maven 项目并使用 maven-bundle-plugin 更新 OBR repository.xml 文件,我会很傻。也许(并且可能)我错过了一些东西。有没有办法说“请在我的 OBR 存储库中添加以下捆绑包 x.jar”。再次抱歉,如果我的问题不清楚
【解决方案2】:

OBR 存储库的“服务器端”仅包含一个索引文件,该文件又包含指向捆绑包的 URL 链接。您无需任何特殊的服务器软件即可提供此功能。例如,Apache 或 Nginx HTTP 服务器就足够了。

【讨论】:

  • 我知道 OBR 仅包含在单个 XML 文件中,并且我知道有一些工具(如 BNDTools 或 maven-bundle-plugin),给定一个正在开发的项目,可以生成你正确的 xml 文件。但是假设您需要添加其他依赖项(例如“guava”库):手动创建这样的 xml 将是愚蠢的。是否有工具可以帮助您自动为您添加数据?类似的东西:“我想添加到我的 OBR repo 'com.google.guava:19.0' 做 'obr-add /home/koldar/com.google.guava.jar'。
  • 生成索引的工具叫做bindex。有很多方法可以使用它。最简单的是,只要您的 repo 内容发生变化,您就可以将其作为命令行工具运行。或者,有一些方法可以让文件在 repo 更改时自动生成索引,但这需要一些额外的服务器端逻辑。也许您可以说出您喜欢它的工作方式,我会告诉您是否以及如何做到这一点。
【解决方案3】:

Karaf Cave 提供了一个 OSGI Bundle Repository。

【讨论】:

  • 它可以在 felix 上运行吗?我知道框架实现可能会为自己定义特定的配置(即 felix.auto.deploy.dir)
  • 它是一个bundle的集合,所以它当然可以在felix上运行,但是你应该考虑在Karaf容器中使用它,这样更容易配置、管理和运行。
猜你喜欢
  • 2015-10-03
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
相关资源
最近更新 更多