【问题标题】:use @Activate annotation in OSGI in Karaf在 Karaf 的 OSGI 中使用 @Activate 注释
【发布时间】:2020-02-24 19:05:24
【问题描述】:

我正在尝试在我的全新捆绑包中添加一个功能,该功能会在 Apache Karaf 容器启动时触发一次。

Bundle 中的主类如下所示:

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

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

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

一些信息:

  • 这是一个 Maven 构建
  • osgi.cmpnslf4j-api 是我在 pom.xml 中的依赖项,目前还没有。
  • 这里没有bnd.bnd文件

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

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

【问题讨论】:

    标签: java osgi apache-karaf


    【解决方案1】:

    这可能是 karaf 的一个经典问题。您需要安装 scr 功能。

    feature:install scr
    

    【讨论】:

      【解决方案2】:

      Component 注释也必须有一个immediate=true。我添加了,activate() 函数在 karaf 启动时被触发。

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

      【讨论】:

        猜你喜欢
        • 2018-04-27
        • 2015-07-21
        • 2015-07-08
        • 2018-05-06
        • 2017-02-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        相关资源
        最近更新 更多