发布aem中的复制侦听器
我正在尝试编写一个侦听器,它在发布环境中侦听页面激活。我编写的代码在author环境中工作,但不在publish中,也就是说,即使在pub环境中,它也不侦听复制。我已经附加了底层代码。非常感谢您的帮助发布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
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提到的,激活事件仅在作者身上触发。