3

我正在开发一个 Java 应用程序来管理 OSGi 框架中的事件。但是,我有以下警告:

WARNING: EventAdmin: Blacklisting ServiceReference [[org.osgi.service.event.EventHandler] | Bundle(Scheduler [1])] due to timeout!

我知道我可以通过 OSGi 服务器的属性来解决问题。但是,我想通过代码解决它。但是,我不知道应该如何在我的 Java 类中管理事件处理程序以避免这个问题。有人可以帮我解决这个问题吗?

非常感谢您提前

4

2 回答 2

4

报告的问题非常糟糕,事件处理程序被调用并且不返回。

所以解决这个问题的唯一方法是找出为什么这个处理程序没有从它的事件方法返回。不返回的对象由 ServiceReference 标识。

于 2013-02-20T07:57:10.550 回答
2

我同意彼得的观点,您应该确保EventHandler在合理的时间内返回(例如,通过在后台线程中执行额外的工作。)

但是,有时关闭黑名单可能很有用,例如在调试期间(如 Neil 所述)。

从错误消息来看,您正在使用Felix Event Admin,它同时响应框架属性和配置管理员。

  • 您可以设置系统属性org.apache.felix.eventadmin.Timeout=0以禁用黑名单,或者
  • 您可以使用 Configuration Admin 设置相同的属性,使用 PID org.apache.felix.eventadmin.impl.EventAdmin。如果您使用不同的配置运行调试和发布版本,这可能是要走的路。
于 2013-02-22T09:52:25.550 回答