我想在我的Eclipse Equinox环境中使用Sling调度程序作为一个包,现在尝试运行示例,包括白板或通过API而没有成功。经过大量的调试之后,我现在已经能够使它工作但是我必须在QuartzScheduler中对调度程序包进行更改并更改对MetricRegistry的引用以添加可选的基数:
@Reference(cardinality=ReferenceCardinality.OPTIONAL)
MetricRegistry metricsRegistry;
否则会使服务无法在Equinox上启动。
在捆绑包中运行测试似乎即使使用Felix也不会解决这个问题,但在这种情况下服务仍然会启动。我还应该注意到MetricRegistry似乎不是一个服务,我无法理解为什么它会通过@Reference实例化。实际上将行改为:
MetricRegistry metricsRegistry = new MetricRegistry();
将在所有情况下正确检索metricsRegistry,Felix或Equinox。
我是否发现了一个错误,或者有一些我不理解的东西?
答案 0 :(得分:0)
在Apache Sling中,从MetricRegistry
捆绑包中注册了org.apache.sling.commons.metrics
实例,请参见MetricsServiceImpl#activate。您应该将此捆绑软件部署在OSGi容器中。