我正在开发一个Java应用程序,以便在OSGi框架中管理事件。但是,我有一个警告如下:
WARNING: EventAdmin: Blacklisting ServiceReference [[org.osgi.service.event.EventHandler] | Bundle(Scheduler [1])] due to timeout!
我知道我可以通过OSGi服务器的属性解决问题。但是,我想通过代码来解决它。但是,我不知道如何管理Java类中的事件处理程序以避免此问题。任何人都可以帮我解决这个问题吗?
非常感谢您提前
答案 0 :(得分:4)
报告的问题非常糟糕,调用事件处理程序但不返回。
因此,唯一的解决方法是找出此处理程序未从其事件方法返回的原因。 ServiceReference标识未返回的对象。
答案 1 :(得分:2)
我同意Peter的意见,你应该确保EventHandler
在合理的时间内返回(例如,在后台线程中踢出额外的工作。)
但是,有时候关闭黑名单可能很有用,例如在调试期间(如Neil所说)。
从错误消息判断,您正在使用Felix Event Admin,它响应框架属性和配置管理员。
org.apache.felix.eventadmin.Timeout=0
设置为禁用黑名单,或org.apache.felix.eventadmin.impl.EventAdmin
使用Configuration Admin设置相同的属性。如果您使用不同的配置来运行调试和发布版本,这可能就是您的选择。