【问题标题】:Bundle Deactivation in Spring OSGISpring OSGI 中的捆绑停用
【发布时间】:2013-02-26 13:39:09
【问题描述】:

在 spring 动态模块中,当服务提供者捆绑包被停用时,依赖捆绑包会发生什么。它们也会被停用吗?

【问题讨论】:

    标签: spring spring-mvc osgi osgi-bundle


    【解决方案1】:

    服务提供者和消费者之间不应该有直接的依赖关系,因为服务接口应该在实现者外部声明。

    当服务被停用时,Spring 注入服务的消费者(它是一个代理)将简单地尝试访问该服务,如果代理在超时期限内找不到合适的服务实现,最终会失败(我相信它是默认的)至 5 分钟)。这将与 OSGi 的动态特性相一致,其中服务引用意味着能够在运行时添加和删除。在这种动态环境中的应用程序必须意识到这一点并进行适当的编码以处理服务可能并不总是可用的事实。

    【讨论】:

    • 而且他们也应该非常清楚这些服务必须是无状态的......而且,一般来说,服务提供者包应该将服务包添加到他们的导出中,因为它们与这个 API 非常紧密地耦合,不像受益于向后兼容性的消费者。他们应该始终导入服务 API 包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2016-01-07
    • 2011-05-29
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多