如何通过Apache Felix事件管理实现避免将我的事件处理程序列入黑名单

时间:2013-10-22 08:55:00

标签: event-handling cq5 apache-felix sling

felix->配置中Apache Felix Event Admin Implementation的标准超时为5000毫秒。现在,如何允许一个或多个事件处理程序花费更长的时间(以编程方式愉快)?

2 个答案:

答案 0 :(得分:3)

如果您不希望事件处理程序被列入黑名单,则可以将该事件作为作业执行。工作不受黑名单的限制,并保证可以运行。有关从事件处理程序处理作业的详细信息,请参阅http://experiencedelivers.adobe.com/cemblog/en/experiencedelivers/2012/04/event_handling_incq.html;有关执行JobProcessor的问题,请参阅http://sling.apache.org/apidocs/sling6/org/apache/sling/event/jobs/JobUtil.html#processJob(org.osgi.service.event.Event,%20org.apache.sling.event.jobs.JobProcessor)

答案 1 :(得分:1)

您可以通过http://www.osgi.org/javadoc/r4v42/org/osgi/service/cm/ConfigurationAdmin.html

中描述的ConfigurationAdmin服务以编程方式更改任何OSGi配置

您需要要更改的配置的PID(OSGi管理控制台或shell将提供该配置)。使用ConfigurationAdmin.getConfiguration(..)检索相应的Configuration对象,并使用更改的属性调用Configuration.update(...)。

话虽如此,提升黑名单超时的事件通常是一个坏主意 - 需要很长时间才能运行的事件处理程序会阻止事情。使用单独的线程或作业(由Chris Leggett建议)来完成缓慢的工作。