我想将Sling调度程序用作Eclipse Equinox环境中的 bundle 包,现在尝试仅通过白板或通过API运行示例,但均未成功。经过大量的调试之后,我现在能够使其工作,但是我不得不在QuartzScheduler中的调度程序包中进行更改,并更改对MetricRegistry的引用以添加可选的基数:

@Reference(cardinality=ReferenceCardinality.OPTIONAL)
MetricRegistry metricsRegistry;

否则会使服务无法在Equinox上启动。

在 bundle 软件中运行测试似乎即使使用Felix也无法解决,但是在那种情况下该服务仍会启动。我还要注意,MetricRegistry似乎不是一项服务,而且我不明白为什么要通过@Reference实例化它。实际上将行更改为:
MetricRegistry metricsRegistry = new MetricRegistry();

在所有情况下,Felix或Equinox都将正确检索metricsRegistry。

我是否发现了一个错误或某些我不理解的东西?

最佳答案

在Apache Sling中,从MetricRegistry bundle 包注册了一个org.apache.sling.commons.metrics实例,请参阅MetricsServiceImpl#activate。您应该将此 bundle 软件部署在OSGi容器中。

10-08 09:08