【问题标题】:OSGi SAT, how should we deal with activation failure?OSGi SAT,我们应该如何处理激活失败?
【发布时间】:2009-05-08 14:49:57
【问题描述】:

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

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

签名受保护 void activate(){}

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

【问题讨论】:

    标签: eclipse osgi


    【解决方案1】:

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

    我认为这种行为是 Equinox 特有的(错误?),因为据我了解,这违反了 OSGi 规范。

    【讨论】:

    • 在这些情况下似乎很难确切知道该怎么做。我认为 SAT 作者应该明确定义我们应该做什么。
    【解决方案2】:

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

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

    您选择的替代方案取决于情况;激活失败的根本原因是什么。如果原因是异常,在正常情况下不应该发生,那么错误或 RuntimeException(当然还有登录)感觉是正确的。

    【讨论】:

    • 我同意发出一些诊断信息是个好主意。我不确定未经检查的异常。一般来说,是的,我可以抛出未经检查的异常。然而,这在这个框架的背景下有效吗?我希望框架通过指定要抛出的异常来定义错误处理“协议”。
    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2019-05-11
    • 2018-10-09
    • 2011-11-15
    • 2023-03-31
    • 2020-03-02
    相关资源
    最近更新 更多