我为 AEM 编写了一个 Java 调度程序。当我在 Apache Felix 的 system/console/bundle
上传 jar 文件时,我的 Java 服务未启动。
我的代码:
@Component
@Service(value = Runnable.class)
@Properties(value = { @Property(name = "scheduler.period", longValue = 1),
@Property(name = "scheduler.concurrent", boolValue = false), })
public class DisclosureLevel_Scheduler implements Runnable {
private static final Logger log = LoggerFactory.getLogger(DisclosureLevel_Scheduler.class);
@Reference
private DisclosureLevelService disclosureLevelService;
@Reference
private ResourceResolverFactory resolverFactory;
@Override
public void run() {
try {
log.info("disclosureLevelService Job Started ::: ");
} catch (Exception e) {
log.error("Exception in scedular job " + e.getMessage());
}
}
}
我的日志文件中没有打印任何内容:(
组件服务状态为未满足引用
。
最佳答案
Component service status is unsatisfied reference
这意味着 AEM 无法“注入(inject)”您的一个或两个 @Reference
你在类里面定义的。如果应该注入(inject)的服务不存在,通常会发生这种情况。
查看您的引用资料,我认为DisclosureLevelService
缺失,因为 ResourceResolverFactory
由 AEM(或 Sling)本身提供,并且应该在那里,除非您的 AEM 确实出现问题。
要检查您的服务是否存在,请转到 Felix 控制台 <your-host>/system/console/services
。要检查该组件是否存在,请转到 Felix 控制台 <your-host>/system/console/components
.
关于java - 为什么我的 Java 调度程序无法在 AEM 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116721/