簡體   English   中英

在 Karaf 的 OSGI 中使用 @Activate 注釋

[英]use @Activate annotation in OSGI in Karaf

我試圖在我的全新捆綁包中有一個 function,當 Apache Karaf 容器啟動時觸發一次。

Bundle 中的主要 class 如下所示:

@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 function?

Component注釋也必須有一個immediate=true 我補充說,並且在 karaf 啟動時觸發了activate() function。

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

這可能是 karaf 的一個經典問題。 您需要安裝 scr 功能。

feature:install scr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM