我正在使用Maven-SCR。通过使用@Component
和@Service
标记,我可以让我的类实例自动注册它提供的接口。
然而,有时,activate方法(标记为@Activate
)甚至是构造函数可能会抛出异常并以我无法处理的方式失败。
问题是:我想捕获该异常,以便我可以正确记录它,但与此同时,我想防止该类在未能激活或初始化时发布其服务。
你们是怎么做到的?
谢谢!
答案 0 :(得分:2)
SCR规范要求将这些方法的异常记录到OSGi LogService中。您是否安装了LogService实施包?如果是这样,您可以在那里找到这些方法的例外情况。如果您需要将这些异常记录到其他日志中,您可能需要查看Pax Logging之类的内容。
答案 1 :(得分:1)
首先,我将查看OSGi框架的日志配置。它应该记录这些例外。
如果这不起作用,您可以在带注释的方法中输入这种类型的代码
catch (Exception ex) { // or RuntimeException if possible
// log it
// then rethrow
throw ex;
}
注意这被一些人视为反模式,因为它往往会产生重复的堆栈跟踪。
这也可以转移到一个方面,尽管这可能会导致OSGi的痛苦。