Java 在卡拉夫的OSGI中使用@Activate注释
我正在尝试在我的全新捆绑包中设置一个函数,该函数在Apache Karaf容器启动时触发一次 捆绑包中的主类如下所示:Java 在卡拉夫的OSGI中使用@Activate注释,java,osgi,apache-karaf,Java,Osgi,Apache Karaf,我正在尝试在我的全新捆绑包中设置一个函数,该函数在Apache Karaf容器启动时触发一次 捆绑包中的主类如下所示: @Component(service = BrandNewBundle.class) public class BrandNewBundle { .... @Activate protected void activate(ComponentContext myComponentContext) { LOG.info("Brand ne
@Component(service = BrandNewBundle.class)
public class BrandNewBundle {
....
@Activate
protected void activate(ComponentContext myComponentContext) {
LOG.info("Brand new bundle started.");
}
}
在karaf控制台中,我看到bundle状态为Active。但是在日志中,我没有看到我试图记录的消息
一些信息:
这是一个专业的建造
osgi.cmpn和slf4j api是我在pom.xml中的依赖项,到目前为止没有其他依赖项。
此文件中没有bnd.bnd文件
我读了这一页。与上面提到的不同,我的OSGI-INF/…xml是自动生成的。我不知道如何进一步调试
总之,问题是,如何真正触发我的激活功能?这可能是卡拉夫的经典问题。您需要安装scr功能
feature:install scr
这可能是卡拉夫的经典问题。您需要安装scr功能
feature:install scr
组件注释也必须具有immediate=true。我加了这个,激活功能在卡拉夫启动时被触发
@Component(
immediate=tue,
service = BrandNewBundle.class
)
组件注释也必须具有immediate=true。我加了这个,激活功能在卡拉夫启动时被触发
@Component(
immediate=tue,
service = BrandNewBundle.class
)