3

是的,对于 Apache Karaf 的人来说,一些真正的菜鸟(这是我第一次将捆绑部署到 Karaf)问题。我正在部署一个使用大量 org.apache.commons.* 包的包。例如,当我部署我的包然后尝试启动它时,Karaf 抛出了一个关于找不到 org.apache.commons.pools 的错误。我做了一些谷歌搜索并运行了以下内容:

osgi:install mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool

这安装了丢失的捆绑包,我点击了下一个。虽然我知道所需的包没有安装到 OSGI 容器中,但我有一些问题需要澄清。

  • 据我了解,我正在安装的捆绑包正在使用某种 servicemix 捆绑包。所以我想知道这是否需要,我不能只添加一个 org.apache.commons.pool 包而不是完整的 servicemix 包吗?
  • 当我缺少捆绑包时,如何找出要使用的 maven url。例如说我需要一个 foobar 捆绑包,如果我不知道 url,我将如何添加捆绑包?由于未找到 package=org.apache.log,现在我无法启动我的包。那么我怎么知道如何添加呢?
  • 捆绑包和功能之间的区别?

希望问题足够清楚。我正在与 karaf 取得进展,只需要澄清这些观点。

4

1 回答 1

11

并非所有的 Java “jar”都与 OSGi 兼容,它们需要具有OSGi 捆绑清单

当我需要从控制台添加依赖项时,我会按照以下步骤操作:

  • 在mvnrepository.com上搜索库
  • 尝试像这样安装它:

    安装 mvn:[group-id]/[artifact-id]/[version]

  • 如果它不是 OSGi 库,那么我会在SpringSource进行搜索。在这个存储库中,所有的包都是 OSGi,但它们有过时的版本是正常的。

  • 我的最后一个选择是使用允许您部署非 OSGi 包的 Karaf 包装部署器。检查用户指南

关于功能,功能只是一组捆绑包。阅读这篇文章了解更多详情。

于 2012-04-01T09:13:10.187 回答