java - OSGi 中的反序列化问题

标签 java serialization osgi deserialization

我正在使用 OSGi 插件,但遇到反序列化问题。

假设有两个插件 A 和 B。插件 A 是通用的,会在很多应用程序中使用,而插件 B 只特定于一个应用程序。插件 A 基本上是所有应用程序的框架。插件 B 使用插件 A 的 API 来保存状态信息。因此,插件 B 依赖于 A,但 A 不依赖于 B。

为了简单起见,假设我将信息存储在插件 A 的 HashMap 中。实现 Serialized 的类 X 存在于插件 B 中。插件 A 将其序列化并存储。在反序列化过程中,插件 A 无法找到类 X,因此失败。我无法将 X 类添加到插件 A,因为插件 A 是通用的,在 A 中没有任何意义。

X 类在运行时可用。解决这个问题的正确而干净的方法是什么?

提前致谢。

最佳答案

听起来插件 A 是一个缓存。插件 A 的设计方式应该是在初始化期间(或在每次请求期间)可以传入类加载器。如果不是这样设计的,那么它并不是真正的OSGi友好的,不应该在OSGi环境中使用。

例如:EHCache、Infinispan等缓存引擎允许在缓存初始化期间传递Classloader实例。

关于java - OSGi 中的反序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27010799/

相关文章:

java - 如何添加命令权限?

c# - 数组到 XML 的 .NET 序列化。如何为数组类型设置别名?

java - OSGi:当某个服务可用时,DS 服务消费者是否会同步收到通知

java - GlassFish 如何成为 OSGi 容器?

java - Eclipse 中的 ObjectDB 连接

java - 如何从 Volley 响应中读取数组内的数组?

java - 使用 dom4j 用 XML 内容填充 ArrayList<ArrayList<String>>

c++ - 使用 XML 宽存档 boost juce::String 的反序列化问题

python - Django: 'int' 对象在 View 集中有不同的序列化程序时不可迭代

java - 运行测试时找不到 Pax Exam Option 类的类