捆绑中需要AEM调度程序代码以选择osgi配置,并在部署捆绑后立即自动开始执行。当前,在部署包含调度程序代码的捆绑软件之后,每次都必须保存相应调度程序的配置才能启动它。
任何指针都将不胜感激。
Sling Scheduler作业只是可运行的OSGi服务。 Sling Scheduler Service将找到所有它们,并将根据它们的配置(使用cron样式或定期)触发它们。
https://sling.apache.org/documentation/bundles/scheduler-service-commons-scheduler.html
如果您想使用Config-Class,请用您的代码扩展您的问题(简化为基本内容,在您情况下为config和scheduler作业。
这里是一个有效的例子。捆绑软件激活后,作业每5秒运行一次。无论捆绑软件是如何停止/启动,还是关闭并重新启动AEM。
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.invoke.MethodHandles;
@Component(service = Runnable.class,
property = {
"scheduler.expression=*/5 * * * * ?"
})
public class SchedulerTest implements Runnable {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public void run() {
LOG.info("run");
}
@Activate
protected void activate() {
LOG.info("activated");
}
}