Osgi 如何在Karaf中启动时安装捆绑包

Osgi 如何在Karaf中启动时安装捆绑包,osgi,apache-karaf,blueprint-osgi,Osgi,Apache Karaf,Blueprint Osgi,我遇到了这个问题,但它并没有完全回答我的问题。我正在使用blueprint在Karaf中建立一个H2数据库,它要求我首先安装H2驱动程序和OSGi企业包,因为它包含JDBC库 install -s mvn:org.osgi/org.osgi.enterprise/4.2.0 install -s mvn:com.h2database/h2/1.3.174 我将blueprint XML文件添加到Karaf的deploy文件夹中,在我安装H2和enterprise软件包之前,它会不断发出错误消息

我遇到了这个问题,但它并没有完全回答我的问题。我正在使用blueprint在Karaf中建立一个H2数据库,它要求我首先安装H2驱动程序和OSGi企业包,因为它包含JDBC库

install -s mvn:org.osgi/org.osgi.enterprise/4.2.0
install -s mvn:com.h2database/h2/1.3.174
我将blueprint XML文件添加到Karaf的deploy文件夹中,在我安装H2和enterprise软件包之前,它会不断发出错误消息。理想情况下,我希望在blueprint脚本启动之前安装enterprise和H2,因此我想以某种方式将其添加到karaf的启动过程中,但我不确定如何进行


任何见解都将不胜感激

一个选项是在部署捆绑包之前热部署特性XML

有关更多详细信息,请参阅《卡拉夫指南》。下面是一个XML示例:

<features>
  <feature name="features_test">
    <bundle>mvn:org.osgi/org.osgi.enterprise/4.2.0</bundle>
    <bundle>mvn:com.h2database/h2/1.3.174</bundle>
  </feature>
</features>

实现这一点的一种方法是将蓝图文件发布到maven repo。这样,您可以在要素文件中引用它。请参阅带有目标附加工件的maven build helper插件。许多功能文件都是以这种方式部署的。
您还可以将蓝图文件放入普通包中。然后它也可以在karaf以外的其他容器中工作。

啊,好的,那么我就把那个xml文件放到deploy文件夹中?我不能把我的蓝图也加进去吗?我需要能够对它们进行排序,首先是enterprise,然后是h2,然后是h2 db。谢谢,我会试一试。此外,我尝试将蓝图文件放入捆绑包中,但它似乎没有加载,我无法通过捆绑包激活开始方法访问它,有什么想法吗?如果使用蓝图文件,则不应使用Activator。在blueprint捆绑包的activator中,您到底想做什么?我正在遵循activator start方法中的Karaf数据库访问教程,我正在获取在blueprint文件中为H2数据库指定的JNDI数据源值。啊,好的。。因此,您正在使用数据源的蓝图和另一个捆绑包中的激活器。那应该很好。也许你在服务发布之前就已经加入了。你使用servicetracker吗?这应该会有帮助。我怀疑可能是这样,谢谢你的建议,但我对servicetracker不熟悉,我得去看看。另外,我刚刚升级到Karaf 3.0.0,遇到了一个错误,我使用的是3.0.0-RC1,我将非常感谢您的反馈。谢谢你的帮助。