Zuletzt aktualisiert am
30. April 2021
Frage
Wie kann ich einen Replikations-Ereignis-Listener implementieren?
Antwort, Auflösung
- Erstellen Sie eine Klasse, die EventHandler -Schnittstellen implementiert.
- Fügen Sie die folgenden
SCR
-Anmerkungen hinzu@scr.component metatype="false" immediate="true" @scr.service interface="org.osgi.service.event.EventHandler" @scr.property name="event.topics" valueRef="ReplicationAction.EVENT_TOPIC"
- Implementieren Sie die
public void handleEvent(Event event)
-Methode.
Beispiel
In diesem einfachen Beispiel wird der Geometrixx-Anwendung ein Replikations-Ereignis-Listener hinzugefügt. Es protokolliert nur die Ereignisse, die es empfängt.
- Öffnen Sie CRXDE
- Fügen Sie die folgende Klassenimplementierung hinzu. Stellen Sie sicher, dass Sie es im richtigen Ordner unter
/apps/geometrixx/src/impl/src/main/java
basierend auf dem Paketnamen speichern.package com.day.cq.wcm.apps.geometrixx.impl; import org.osgi.service.event.Event; import com.day.cq.workflow.event.WorkflowEvent; import org.osgi.service.event.EventHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.day.cq.replication.ReplicationAction; /** * This is an example listener that listens for replication events and * logs a message. * * @scr.component metatype="false" immediate="true" * @scr.service interface="org.osgi.service.event.EventHandler" * @scr.property name="event.topics" valueRef="ReplicationAction.EVENT_TOPIC" */ public class ReplicationEventListener implements EventHandler { /** * default logger */ private static final Logger log = LoggerFactory.getLogger(ReplicationEventListener.class); public void handleEvent(Event event) { String n[] = event.getPropertyNames(); log.info(""); log.info("Event occurred: {}", event.getProperty(WorkflowEvent.EVENT_TYPE)); log.info("Event properties: "); for(String s : n) { log.info(s + " = " + event.getProperty(s)); } ReplicationAction action = ReplicationAction.fromEvent(event); if(action != null) { log.info("Replication action {} occured on {} ", action.getType().getName(), action.getPath()); } log.info(""); } }
- Klicken Sie mit der rechten Maustaste auf die Datei
com.day.cq.wcm.cq-wcm-geometrixx.bnd
unter/apps/geometrixx/src/impl/src/main/java
und wählen SieBuild->Build Bundle
Dies sollte das geometrixx-Bundle in der CQ-Instanz erstellen und neu starten, mit der Ihr CRXDE verbunden ist.- Hinweis: Wenn Sie
com.day.cq.wcm.cq-wcm-geometrixx.bnd
nicht sehen, klicken Sie mit der rechten Maustaste aufpom.xml
und wählen SieBuild->Generate .bnd file
.
- Hinweis: Wenn Sie
- Um festzustellen, ob Ihr neuer Ereignis-Auflister bereitgestellt wurde, klicken Sie in der Felix-Konsole auf die Registerkarte „Komponenten“ und vergewissern Sie sich, dass
com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener
vorhanden ist.
Um Ihren Reproduktions-Auflister zu testen, aktivieren Sie eine Seite in CQ und prüfen Sie die „crx-quickstart/logs/error.log“-Protokolldatei in Ihrer CQ-Installation. Standardmäßig sollte die Protokollierung von Code, der in CQ bereitgestellt wird, dort vorhanden sein. Sie sollten Meldungen sehen, die folgendem Beispiel ähneln:
16.07.2010 13:01:32.525 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener 16.07.2010 13:01:32.525 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener Event occurred: null 16.07.2010 13:01:32.525 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener Event properties: 16.07.2010 13:01:32.525 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener event.topics = com/day/cq/replication 16.07.2010 13:01:32.525 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener path = /content/geometrixx/en/news/webcasts 16.07.2010 13:01:32.525 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener type = ACTIVATE 16.07.2010 13:01:32.526 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener modificationDate = java.util.GregorianCalendar[time=1279310491837,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Los_Angeles",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=197,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=1,SECOND=31,MILLISECOND=837,ZONE_OFFSET=-28800000,DST_OFFSET=3600000] 16.07.2010 13:01:32.526 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener event.distribute = 16.07.2010 13:01:32.526 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener userId = admin 16.07.2010 13:01:32.526 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener Replication action Activate occured on /content/geometrixx/en/news/webcasts 16.07.2010 13:01:32.526 *INFO* [Thread-5560] com.day.cq.wcm.apps.geometrixx.impl.ReplicationEventListener
Gilt für
CQ5.3
Andere Verwandte Artikel:
- Die Replikation einer Seite mit vielen gleichgeordneten Elementen dauert sehr lange
- Replikationsrechte fehlen nach dem Upgrade auf CQ 5.5
- Fehler bei Replikationsagenten aufgrund maximaler Aufgabenwarteschlangenbegrenzungen
- ACL-Replikation
- Inhaltswachstum aufgrund der umgekehrten Replikation
- Der Replikationsagent verwendet den anonymen Benutzer als Transportbenutzer