java - 在 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
. 但是在日志中,我没有看到我尝试记录的消息。
一些信息:
- 这是一个 Maven 构建
osgi.cmpn
并且slf4j-api
是我的依赖pom.xml
项,到目前为止没有别的。- 这里面没有
bnd.bnd
文件
我已阅读该Apache Felix Service Component Runtime (SCR)
页面。与那里提到的不同,myOSGI-INF/....xml
是自动生成的。我不知道如何进一步调试。
综上所述,问题是,如何真正触发我的activate
功能?
解决方案
Component
注释也必须有immediate=true
一个。我补充说,该activate()
功能是在 karaf 启动时触发的。
@Component(
immediate=tue,
service = BrandNewBundle.class
)
推荐阅读
- ios - 添加segue后Xcode故事板调整控制器场景的大小
- reactjs - 如何在 axios 的 Get 方法中使用 'application/x-www-form-urlencoded'
- django - 在部分模型更新期间手动传递附加数据
- python - 是否可以手动更新 Python 的 unicodedata 使用的 unicode 字符数据库?
- angular - 谷歌云上的 Angular 8,application_readable 不起作用
- python-3.x - python - 如何基于pandas中的groupby函数将数据框中的特定列转换为字典?
- html - 当一列变大时不要缩放其他列
- php - 未找到 Ajax 处理程序“onPagePosts”(10 月新手)
- zend-framework - 由于 000-default,Apache2 显示空白页面?
- python - 文字冒险游戏,攻击导致游戏崩溃