如何在声明性服务激活器中失败?

时间:2012-06-05 13:11:10

标签: osgi declarative-services

当我知道失败是不可恢复的时,我的声明式服务的activate()方法失败的最佳方法是什么?具体来说:我的服务可以通过configadmin配置元数据属性。如果配置无效(比如说格式错误的URL),失败的最佳做法是什么?我目前的做法是抛出IllegalArgumentException。有没有更好的办法? DS主机是否注意异常类型,或者所有异常都被视为相同?

4.2规范简单地说“如果激活方法抛出 例外,SCR必须记录包含异常的错误消息 日志服务,如果存在,并且组件配置未激活。“这告诉我,我可以抛出任何异常,并不重要。

我注意到DS会在某些情况下重试activate方法,比如其他依赖项之一是否会发生变化。除非配置已修复,否则是否有任何机制告诉基础设施不要打扰?或者我应该不担心它,只是接受我的激活器会被多次调用一次?

1 个答案:

答案 0 :(得分:3)

任何例外都没问题。

我认为您接受可能会再次尝试激活器。当配置固定时,可能随时发生。你可以禁用你的组件,但是你怎么知道何时重新启用它?