Apache Karaf和Apache Commons Bundles

时间:2012-03-29 18:23:18

标签: architecture osgi apache-karaf

对于Apache Karaf的人来说,这是一些真正的noob(这是我对Karaf的第一次捆绑)问题。我正在部署一个使用了很多org.apache.commons。* bundle的bundle。当我部署我的捆绑包然后尝试启动它时,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网址。例如,如果我不知道网址,我需要一个foobar包如何添加包?由于找不到package = org.apache.log,我现在无法启动我的捆绑包。那我怎么知道如何添加呢?
  • 捆绑和功能之间的区别?

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

1 个答案:

答案 0 :(得分:11)

并非所有Java“jar”都与OSGi兼容,他们需要拥有OSGi bundle manifest

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

  • mvnrepository.com
  • 搜索图书馆
  • 尝试像这样安装:

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

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

  • 我的最后一个选择是使用可以部署非OSGi包的Karaf wrap deployer。查看user guide

关于功能,功能只是一组功能。请阅读this post了解更多详情。