OSGiDS:为什么只记录绑定方法引发的异常?

OSGiDS:为什么只记录绑定方法引发的异常?,osgi,declarative-services,Osgi,Declarative Services,为什么只记录绑定方法引发的异常是规范 我希望组件在这种情况下不会激活 如何处理绑定方法引发的异常以确保组件设置正确?仅仅因为服务引用的绑定引发异常并不一定意味着组件无法激活。由于组件知道异常(毕竟是绑定方法引发了异常),因此可以以这样的方式实现它,即通过返回默认值或提供有限的服务来激活它 绑定方法无论如何都不应该抛出任何异常,这与可能导致激活失败的激活方法不同 参考资料: OSGi 112.5.7:“如果绑定方法引发异常,SCR必须使用日志服务(如果存在)记录包含异常的错误消息,但组件配置的激活

为什么只记录绑定方法引发的异常是规范

我希望组件在这种情况下不会激活


如何处理绑定方法引发的异常以确保组件设置正确?

仅仅因为服务引用的绑定引发异常并不一定意味着组件无法激活。由于组件知道异常(毕竟是绑定方法引发了异常),因此可以以这样的方式实现它,即通过返回默认值或提供有限的服务来激活它

绑定方法无论如何都不应该抛出任何异常,这与可能导致激活失败的激活方法不同

参考资料:


OSGi 112.5.7:“如果绑定方法引发异常,SCR必须使用日志服务(如果存在)记录包含异常的错误消息,但组件配置的激活不会失败。”

组件如何意识到异常。似乎它只是被服务组件运行时吞没了。@Dave H绑定方法可以
try/catch
,如果它期望出现异常。如果这是唯一明智的策略,它甚至可以重新调用它。如果绑定方法不期望出现异常(RuntimeException),该怎么办?@Dave H:我认为绑定方法不应该做任何复杂的事情,所以不应该有任何异常。将它们视为setter,并在激活方法中执行复杂的操作。如果binding方法是动态的,并且可以在激活方法被调用后被调用,那么情况又如何呢。这就是我的问题所在。