将服务参考列入黑名单

时间:2013-02-20 06:43:20

标签: java osgi apache-felix

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

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

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

非常感谢您提前

2 个答案:

答案 0 :(得分:4)

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

因此,唯一的解决方法是找出此处理程序未从其事件方法返回的原因。 ServiceReference标识未返回的对象。

答案 1 :(得分:2)

我同意Peter的意见,你应该确保EventHandler在合理的时间内返回(例如,在后台线程中踢出额外的工作。)

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

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

  • 您可以将系统属性org.apache.felix.eventadmin.Timeout=0设置为禁用黑名单,或
  • 您可以使用PID org.apache.felix.eventadmin.impl.EventAdmin使用Configuration Admin设置相同的属性。如果您使用不同的配置来运行调试和发布版本,这可能就是您的选择。