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

时间:2014-11-20 21:59:05

标签: osgi

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

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

可以避免序列化吗?

2 个答案:

答案 0 :(得分:1)

Osgi类加载规则仅在类加载时有效。例如,如果您的bundle发布了一个以Object作为参数的服务,您可以为其提供任何实例。即使是来自包装的也不会导入。

答案 1 :(得分:1)

克里斯蒂安是对的。除此之外,这正是您不应直接共享对象,而是共享接口的原因。虽然这仍然不会使消费者可以使用这两种版本的界面,但至少它会尝试做正确的事情并选择x和y兼容的界面。在这种情况下,它必须选择最低的公分母。