AEM听捆绑注册

时间:2015-12-11 07:30:05

标签: aem

我知道我可以使用JCR EventListener来检查节点上的更改。我也知道OSGi包实现了一个ServiceListener接口,让他们知道捆绑包的注册或停止时间。

我觉得我有点接近,但我似乎无法连接这些点。如何在AEM中部署可以侦听其他捆绑包ServiceEvent更改的捆绑包?

2 个答案:

答案 0 :(得分:0)

你的用例是什么?您需要BundleTracker还是ServiceTracker

在可能的情况下,您可能需要扩展BundleTracker / ServiceTracker并在添加XXXxxxx / modifiedxxxxxx / removedxxxxxx方法时处理您的逻辑。

您可以查看AEM commons codeTracker

的一些示例

答案 1 :(得分:0)

是的,你是对的。您可以使用Felix EventAdmin收听OSGi事件。

There你可以找到规范,但有几个字:

  1. 首先,您需要实现接口EventHandler
  2. 为主题 org / osgi / framework / BundleEvent / STARTED
  3. 的事件注册您的处理程序

    在文档中,他们不使用注释,但如果您在项目中使用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
        }
    }