【问题标题】:How to install a bundle on boot in Karaf如何在 Karaf 启动时安装包
【发布时间】:2013-12-30 04:29:52
【问题描述】:

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

install -s mvn:org.osgi/org.osgi.enterprise/4.2.0
install -s mvn:com.h2database/h2/1.3.174

我将蓝图 XML 文件添加到 Karaf 的部署文件夹中,它一直给出错误消息,直到我安装 H2 和企业包。理想情况下,我想在蓝图脚本启动之前安装企业版和 H2,所以我想以某种方式将其添加到 karaf 的启动过程中,但我不确定如何。

我们将不胜感激任何见解。

【问题讨论】:

    标签: osgi apache-karaf blueprint-osgi


    【解决方案1】:

    一种选择是在部署你的包之前热部署一个特性 XML。

    有关详细信息,请参阅 Karaf deployer 指南。这是一个 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>
    

    【讨论】:

    • 啊,好吧,所以我会把那个 xml 文件放到部署文件夹中?我不能把我的蓝图也加进去吗?我需要能够对它们进行排序,首先是企业,然后是 h2,然后是 h2 db。
    【解决方案2】:

    实现此目的的一种方法是将蓝图文件发布到 maven 存储库。这样您就可以在功能文件中引用它。请参阅带有目标附加工件的 maven 构建助手插件。许多功能文件都是以 tnis 方式部署的。 您也可以将您的蓝图文件放入普通包中。然后它也可以在 karaf 以外的其他容器中工作。

    【讨论】:

    • 谢谢,我会试一试。另外,我尝试将我的蓝图文件放在我的包中,但它似乎没有加载,我无法在包激活启动方法中访问它,有什么想法吗?
    • 如果你使用蓝图文件,那么你不应该使用激活器。您究竟在蓝图包的激活器中尝试做什么?
    • 我正在关注你的Karaf数据库访问教程liquid-reality.de/display/liquid/2012/01/13/…在激活器启动方法中,我正在获取H2数据库的蓝图文件中指定的JNDI数据源值。
    • 啊好吧..所以你正在使用数据源的蓝图和另一个包中的激活器。那应该没问题。也许您在服务发布之前就访问了它。您使用服务跟踪器吗?这应该会有所帮助。
    • 我怀疑可能是这种情况,感谢您的建议,但我对 servicetracker 不熟悉,我必须检查一下。另外,我刚刚升级到 Karaf 3.0.0 并遇到了一个错误,我使用的是 3.0.0-RC1,karaf.922171.n3.nabble.com/… 我很感谢您的反馈。感谢您的所有帮助。
    猜你喜欢
    • 2016-09-04
    • 2012-03-14
    • 2020-07-16
    • 2013-05-01
    • 1970-01-01
    • 2014-08-27
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多