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

Osgi 声明性服务的服务绑定顺序,osgi,declarative-services,Osgi,Declarative Services,有没有办法找出或确定声明性服务的服务绑定顺序?我的问题是,除了其他服务外,我的OSGI中还运行着一个日志服务。现在,我的组件绑定了这个日志服务和一些其他服务。每次绑定或取消绑定服务时,我都要编写一条日志消息。但是,如果在我的日志记录服务之前绑定了服务A,则不能写入服务A的日志条目 我可以以某种方式配置绑定顺序吗?我读过关于将服务的绑定策略设置为“static”的内容,这应该首先确保绑定此服务。但这并不是我想要的。我不希望每次我的日志服务由于某种原因消失时都重新创建我的组件。我同意下面的人关于使用

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


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

我同意下面的人关于使用slf4j的看法

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

很可能不只是去极化服务

这听起来像是ServiceTracker的一个很好的候选者。只需将其关闭,直到您的日志服务绑定。幸运的是,它与声明式服务非常兼容

还有pax日志记录,您不必绑定到LogService,而是使用log4j/slf4j API,这样您就不必担心LogService的生命周期了


还有第三个选项,您可以在绑定上为每个服务发布一个OSGI事件,然后使用一个事件侦听器,它将在LogService上打印事件,或者将它们排队,直到LogService可用为止。这是比您可能喜欢的更多的运动部件。

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

我要说的是,对于SLF4j api,我不建议仅仅为了一个争吵而增加所有种类的复杂性。您使用的是哪种框架?我使用Equinox,我使用的组件与您使用的组件相同,每个服务都有一条被绑定的消息,但我从来没有遇到过问题。您好,我使用Knopflefish。您是如何定义绑定顺序的?