OSGi SAT,我们应该如何处理激活失败?

时间:2009-05-08 14:49:58

标签: eclipse osgi

eclipse OSGi Service Activator Toolkit提供了一个框架,可以简化处理budles之间的依赖关系。

可以从org.eclipse.soda.sat.core.framework.BaseBundleActivator派生并覆盖(例如)activate()方法来进行一些特定的初始化工作。

签名受保护void activate(){}

这引出了一个问题:“如果activate()失败,我们会做什么?”,假设由于某种原因我们无法正确初始化。我不能抛出异常,方法signatiure不允许这样做。

2 个答案:

答案 0 :(得分:1)

如果您使用的是Equinox(使用org.eclipse.osgi_3.5.1.R35x_v20090827测试),则在activate()方法中抛出RuntimeException或Error会对您没有帮助。 独立于你扔掉的东西最终将处于状态ACTIVE。

我认为这种行为特定于Equinox(bug?),因为根据我的理解,这违反了OSGi规范。

答案 1 :(得分:0)

仍然可以抛出RuntimeExceptionError(和继承这些的异常)。 (请记住,错误表示合理的应用程序不应该试图捕获的严重问题。)

向您的日志记录工具输出内容似乎也是一个好主意。

您选择的替代方案取决于具体情况;激活失败的根本原因是什么。如果原因是异常的,那么在正常情况下不会发生这种情况,Error或RuntimeException(和ofcourse loggin)感觉正确。