eclipse OSGi Service Activator Toolkit提供了一个框架,可以简化处理budles之间的依赖关系。
可以从org.eclipse.soda.sat.core.framework.BaseBundleActivator派生并覆盖(例如)activate()方法来进行一些特定的初始化工作。
签名受保护void activate(){}
这引出了一个问题:“如果activate()失败,我们会做什么?”,假设由于某种原因我们无法正确初始化。我不能抛出异常,方法signatiure不允许这样做。
答案 0 :(得分:1)
如果您使用的是Equinox(使用org.eclipse.osgi_3.5.1.R35x_v20090827测试),则在activate()方法中抛出RuntimeException或Error会对您没有帮助。 独立于你扔掉的东西最终将处于状态ACTIVE。
我认为这种行为特定于Equinox(bug?),因为根据我的理解,这违反了OSGi规范。
答案 1 :(得分:0)
仍然可以抛出RuntimeException和Error(和继承这些的异常)。 (请记住,错误表示合理的应用程序不应该试图捕获的严重问题。)
向您的日志记录工具输出内容似乎也是一个好主意。
您选择的替代方案取决于具体情况;激活失败的根本原因是什么。如果原因是异常的,那么在正常情况下不会发生这种情况,Error或RuntimeException(和ofcourse loggin)感觉正确。