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