我知道我可以使用JCR EventListener来检查节点上的更改。我也知道OSGi包实现了一个ServiceListener接口,让他们知道捆绑包的注册或停止时间。
我觉得我有点接近,但我似乎无法连接这些点。如何在AEM中部署可以侦听其他捆绑包ServiceEvent更改的捆绑包?
答案 0 :(得分:0)
你的用例是什么?您需要BundleTracker还是ServiceTracker。
在可能的情况下,您可能需要扩展BundleTracker / ServiceTracker并在添加XXXxxxx / modifiedxxxxxx / removedxxxxxx方法时处理您的逻辑。
您可以查看AEM commons code和Tracker
的一些示例答案 1 :(得分:0)
是的,你是对的。您可以使用Felix EventAdmin收听OSGi事件。
There你可以找到规范,但有几个字:
在文档中,他们不使用注释,但如果您在项目中使用maven scr插件 - 您可以使用注释来完成。您的代码可能如下所示:
@Component
@Service(value = EventHandler.class)
@Property(name = EventConstants.EVENT_TOPIC, value = { ReplicationAction.EVENT_TOPIC })
public class YourEventHandler implements EventHandler {
@Override
public void handleEvent(Event event) {
// do smth with event
}
}