将Sling Scheduler与Eclipse Equinox或OSGI @Reference规则一起使用

时间:2018-06-02 17:06:49

标签: osgi sling

我想在我的Eclipse Equinox环境中使用Sling调度程序作为一个包,现在尝试运行示例,包括白板或通过API而没有成功。经过大量的调试之后,我现在已经能够使它工作但是我必须在QuartzScheduler中对调度程序包进行更改并更改对MetricRegistry的引用以添加可选的基数:

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

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

在捆绑包中运行测试似乎即使使用Felix也不会解决这个问题,但在这种情况下服务仍然会启动。我还应该注意到MetricRegistry似乎不是一个服务,我无法理解为什么它会通过@Reference实例化。实际上将行改为:

MetricRegistry metricsRegistry = new MetricRegistry();

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

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

1 个答案:

答案 0 :(得分:0)

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