4

我正在使用 Maven-SCR。通过使用@Componentand@Service标签,我可以让我的类实例自动注册它提供的接口。

但是,有时,activate 方法(标记为@Activate)甚至构造函数可能会抛出异常并以我无法处理的方式失败。

问题是:我想捕获该异常,以便正确记录它,但同时,我想防止该类在无法激活或初始化时发布其服务。

你们是怎么做到的?

谢谢!

4

2 回答 2

2

SCR 规范要求将这些方法的异常记录到 OSGi LogService。您是否安装了 LogService 实现包?如果是这样,您可以从那里记录的这些方法中找到异常。如果您需要将这些异常记录到其他日志中,您可能需要查看Pax Logging之类的内容。

于 2012-10-07T13:51:06.893 回答
1

首先,我会查看您的 OSGi 框架的日志记录配置。它应该记录这些异常。

如果这不起作用,您可以将此类代码放入带注释的方法中

catch (Exception ex) {  // or RuntimeException if possible
    // log it
    // then rethrow
    throw ex;
}

请注意,这被某些人认为是反模式,因为它往往会产生重复的堆栈跟踪。

这也可以转移到一个方面,尽管这可能会给 OSGi 带来痛苦。

于 2012-10-07T13:13:40.070 回答