有没有办法找出或确定与声明性服务绑定服务的顺序?我的问题是我在OSGI和其他服务中运行的日志服务。现在,我的组件绑定了这个日志服务和其他一些服务。我想在每次绑定或解绑服务时写一条日志消息。但是,如果在我的日志记录服务之前绑定了服务A,则不能写入A的日志条目。
我可以以某种方式配置绑定顺序吗?我读到了将服务的绑定策略设置为“静态”,这应该确保首先绑定此服务。但这不是我想要的。每次我的日志记录服务由于某种原因消失时,我都不希望重新创建我的组件。
答案 0 :(得分:1)
我同意以下关于使用slf4j的人。
我可以以某种方式配置绑定顺序吗?
很可能不单单使用Declaritive Services。
这听起来像是ServiceTracker的一个很好的候选者。只需保持关闭,直到您的日志记录服务绑定。幸运的是,它与Declarative Services非常兼容。
还有pax-logging,你没有绑定到LogService,而是使用log4j / slf4j API,因此你可能不必担心LogService的生命周期。
还有第三个选项,您可以在bind上为每个服务发布OSGI事件,然后有一个事件监听器,它将在LogService上打印事件,或者将它们排队直到LogService可用。这是比你想象的更动人的部分。
答案 1 :(得分:0)
您的DS运行时可能有一些可选的日志记录或跟踪选项,这些选项可能有助于查看引擎盖下的内容。