首页 > 解决方案 > 在 Karaf 的 OSGI 中使用 @Activate 注释

问题描述

我试图在我的全新捆绑包中有一个功能,该功能在 Apache Karaf 容器启动时触发一次。

Bundle 中的主类如下所示:

@Component(service = BrandNewBundle.class)
public class BrandNewBundle {

    ....
    @Activate
    protected void activate(ComponentContext myComponentContext) {
        LOG.info("Brand new bundle started.");
    }
}

在 karaf 控制台中,我看到捆绑包状态为Active. 但是在日志中,我没有看到我尝试记录的消息。

一些信息:

我已阅读该Apache Felix Service Component Runtime (SCR)页面。与那里提到的不同,myOSGI-INF/....xml是自动生成的。我不知道如何进一步调试。

综上所述,问题是,如何真正触发我的activate功能?

标签: javaosgiapache-karaf

解决方案


Component注释也必须有immediate=true一个。我补充说,该activate()功能是在 karaf 启动时触发的。

@Component(
    immediate=tue,
    service = BrandNewBundle.class
)

推荐阅读