Apache Karaf和Apache Commons Bundles

Nam*_*ian 3 architecture osgi apache-karaf

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

osgi:install mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool
Run Code Online (Sandbox Code Playgroud)

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

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

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

jor*_*deu 11

并非所有Java"jar"都与OSGi兼容,他们需要拥有OSGi捆绑包清单.

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

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

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

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

  • 我的最后一个选择是使用Karaf wrap deployer,让你部署非OSGi包.查看用户指南.

关于功能,功能只是一组捆绑.阅读这篇文章了解更多细节.