AEM CRX Event Listener
Hi All,
I have a crx event listener been working all time in AEM 6.0. After migrating to AEM 6.5, it stops working. I basically want to observe a node created under /crx/de, then it will trigger something.
Here is the code:
// -- component & service definition here
public class CRXObservation implements EventListener {
@580286
public void activate(ComponentContext context) throws Exception {
log.info("Activating crx observation");
try {
String[] nodetypes = {"cq:Page"};
ResourceResolver resolver = getResourceResolver();
Session adminSession = resolver.adaptTo(Session.class);
adminSession.getWorkspace().getObservationManager().addEventListener(
this,
Event.NODE_ADDED,
"/content/site/news", //path
true,
null,
nodetypes, //nodetypes filter
false
);
log.trace("After adding listener, session=>{}, resolver=>{}", adminSession, resolver);
} catch (RepositoryException e) {
log.error("Unable to register session",e);
throw new Exception(e);
}
}
@3038739
public void deactivate(){
if (adminSession != null) {
adminSession.logout();
}
}
private ResourceResolver getResourceResolver() {
try {
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "writeService");
return resourceResolverFactory.getServiceResourceResolver(param);
} catch (Exception e) {
ExceptionUtils eu = new ExceptionUtils();
log.debug("Cannot get resourceresolver: {}", eu.getFullStackTrace(e));
return null;
}
}
public void onEvent(EventIterator eventIterator)
{
try {
resourceResolver = getResourceResolver();
log.trace("triggering crx event");
while (eventIterator.hasNext()) {
Event newEvent = eventIterator.nextEvent();
String node=newEvent.getPath();
Resource resource = resourceResolver.getResource(node);
// -- adding node code
// ...
}
adminSession.save();
} catch(Exception e){
log.error("Error while adding page\n",e);
}
}
@ObjectClassDefinition(name="CRX Observation")
public @interface Configuration {
// -- service configuration
}
}
When starting the bundle, I can see the activate log message of log.info("Activating crx observation"); . But the log message in the onEvent function cannot be triggered after adding a page on /crx/de. Any suggestion?
Thanks!
-k