OSGi 如何处理bundle之间的共享对象



假设一个对象有两个导出版本,其中两个版本都具有属性x但新的版本引入了新的属性y

如何创建可以接受对象两个版本的捆绑包?让我们假设它不会克隆对象,比较它们,放入集合等。它与对象的交互可以像测试是否x != null一样简单。

可以避免序列化吗?

Osgi 类加载规则仅在类加载时处于活动状态。例如,如果您的捆绑包发布了一个将对象作为参数的服务,则可以为其提供任何实例。即使是来自包的也不会导入。

基督徒是正确的。除此之外,这正是您不应该直接共享对象而应共享接口的原因。虽然这仍然不会使两个版本的接口都可供消费者使用,但至少它会尝试做正确的事情并选择x和y都兼容的接口。在这种情况下,它必须选择最低的共同标准。

最新更新