发布aem中的复制侦听器

发布aem中的复制侦听器,aem,Aem,我正在尝试编写一个侦听器,它在发布环境中侦听页面激活。我编写的代码在author环境中工作,但不在publish中,也就是说,即使在pub环境中,它也不侦听复制。我已经附加了底层代码。非常感谢您的帮助 package com.whirlpool.portal.services.listeners; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Properti

我正在尝试编写一个侦听器,它在发布环境中侦听页面激活。我编写的代码在author环境中工作,但不在publish中,也就是说,即使在pub环境中,它也不侦听复制。我已经附加了底层代码。非常感谢您的帮助

package com.whirlpool.portal.services.listeners;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventConstants;
import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.day.cq.replication.ReplicationAction;
import com.day.cq.workflow.event.WorkflowEvent;
//Sling Imports


/**
 * Just a simple DS Component
 */
@Component
@Service
@Properties({
    @Property(
            label = "Event Topics",
            value = { ReplicationAction.EVENT_TOPIC },
            description = "[Required] Event Topics this event handler will to respond to.",
            name = EventConstants.EVENT_TOPIC,
            propertyPrivate = true
    ),
    @Property(
            label = "Event Filters",
            value = "(" + ReplicationAction.PROPERTY_TYPE + "=ACTIVATE)",
            name = EventConstants.EVENT_FILTER,
            propertyPrivate = true
    )
})
public class SimpleDSComponent implements Runnable, EventHandler {

    private Logger log = LoggerFactory.getLogger(this.getClass());



    private BundleContext bundleContext;


    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("Tushar Replication");

        }

        log.info("");

    }


    public void run() {
        log.info("Running...");
    }

    protected void activate(ComponentContext ctx) {
        this.bundleContext = ctx.getBundleContext();
    }

    protected void deactivate(ComponentContext ctx) {
        this.bundleContext = null;
    }

}
请看

关键区别在于,对于作者实例,事件主题是com/day/cq/replication,而对于发布者,事件主题是com/adobe/granite/replication(ReplicationEvent.event\u主题与ReplicationAction.event\u主题)。

请参阅


关键区别在于,对于作者实例,事件主题是com/day/cq/replication,对于发布者事件主题是com/adobe/granite/replication(ReplicationEvent.event\u主题与ReplicationAction.event\u主题)。

如果您对发布环境具有管理/复制访问权限,可以尝试在发布时激活页面。我怀疑复制事件“激活”是在author上触发的,因为“激活”发生在author上。尽管发布时手动激活不是有效的用例。Replication Agent中有OnReceive配置,用于将激活从发布服务器中继到其他发布服务器。我认为您应该在发布环境的节点上有一个“创建”和“修改”侦听器,因为激活只不过是发布到发布服务器。正如Sandeep提到的,激活事件仅在作者身上触发。如果您在publish env上具有管理/复制权限,您可以尝试在publish上激活页面吗。我怀疑复制事件“激活”是在author上触发的,因为“激活”发生在author上。尽管发布时手动激活不是有效的用例。Replication Agent中有OnReceive配置,用于将激活从发布服务器中继到其他发布服务器。我认为您应该在发布环境的节点上有一个“创建”和“修改”侦听器,因为激活只不过是发布到发布服务器。正如Sandeep提到的,激活事件仅在作者身上触发。