与声明性服务绑定的服务顺序

时间:2013-10-25 12:15:20

标签: osgi declarative-services

有没有办法找出或确定与声明性服务绑定服务的顺序?我的问题是我在OSGI和其他服务中运行的日志服务。现在,我的组件绑定了这个日志服务和其他一些服务。我想在每次绑定或解绑服务时写一条日志消息。但是,如果在我的日志记录服务之前绑定了服务A,则不能写入A的日志条目。

我可以以某种方式配置绑定顺序吗?我读到了将服务的绑定策略设置为“静态”,这应该确保首先绑定此服务。但这不是我想要的。每次我的日志记录服务由于某种原因消失时,我都不希望重新创建我的组件。

2 个答案:

答案 0 :(得分:1)

我同意以下关于使用slf4j的人。

  

我可以以某种方式配置绑定顺序吗?

很可能不单单使用Declaritive Services。

这听起来像是ServiceTracker的一个很好的候选者。只需保持关闭,直到您的日志记录服务绑定。幸运的是,它与Declarative Services非常兼容。

还有pax-logging,你没有绑定到LogService,而是使用log4j / slf4j API,因此你可能不必担心LogService的生命周期。

还有第三个选项,您可以在bind上为每个服务发布OSGI事件,然后有一个事件监听器,它将在LogService上打印事件,或者将它们排队直到LogService可用。这是比你想象的更动人的部分。

答案 1 :(得分:0)

您的DS运行时可能有一些可选的日志记录或跟踪选项,这些选项可能有助于查看引擎盖下的内容。