Hazelcast 和 OSGI:ClassNotFoundException
Hazelcast & OSGI: ClassNotFoundException
我有一个 OSGI(基于 Equinox)平台 运行 一个包。这个包连接到 Hazelcast 以检索一些数据:
ClientConfig clientConfig = new XmlClientConfigBuilder(configIs).build();
clientConfig.setClassLoader(com.MyClass.class.getClassLoader());
HazelcastInstance instance = com.hazelcast.client.HazelcastClient.newHazelcastClient(clientConfig);
但是在运行时(instance.getMap(map).values()),在com.MyClass[=32的反序列化过程中=],我得到以下异常:
com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: com.MyClass
我真的不明白为什么 Hazelcast 找不到 com.MyClass,尤其是我调用 setClassLoader( ) 方法。 com.MyClass btw 实现了 Serializable 接口。
我知道将 Hazelcast 与 OSGI 集成似乎是一个常见的困难,但到目前为止我还没有找到解决方案..
任何帮助将不胜感激:)
编辑:
- Hazelcast 版本:3.7.1
- 当我使用内存映射格式的 OBJECT 时,在序列化和反序列化过程中出现错误。使用内存映射格式的 BINARY,我只在反序列化期间收到错误
- 显然这与 OSGI 无关。我在 "normal" Java 应用程序中遇到了同样的问题。我只是在使用谓词使用 values() 方法时遇到问题。
我解决了我的问题。如果有一天有人面临同样的问题,请不要在服务器端管理谓词。这意味着您必须在 Hazelcast class 路径中导入 bean class。
我有一个 OSGI(基于 Equinox)平台 运行 一个包。这个包连接到 Hazelcast 以检索一些数据:
ClientConfig clientConfig = new XmlClientConfigBuilder(configIs).build();
clientConfig.setClassLoader(com.MyClass.class.getClassLoader());
HazelcastInstance instance = com.hazelcast.client.HazelcastClient.newHazelcastClient(clientConfig);
但是在运行时(instance.getMap(map).values()),在com.MyClass[=32的反序列化过程中=],我得到以下异常:
com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: com.MyClass
我真的不明白为什么 Hazelcast 找不到 com.MyClass,尤其是我调用 setClassLoader( ) 方法。 com.MyClass btw 实现了 Serializable 接口。
我知道将 Hazelcast 与 OSGI 集成似乎是一个常见的困难,但到目前为止我还没有找到解决方案..
任何帮助将不胜感激:)
编辑:
- Hazelcast 版本:3.7.1
- 当我使用内存映射格式的 OBJECT 时,在序列化和反序列化过程中出现错误。使用内存映射格式的 BINARY,我只在反序列化期间收到错误
- 显然这与 OSGI 无关。我在 "normal" Java 应用程序中遇到了同样的问题。我只是在使用谓词使用 values() 方法时遇到问题。
我解决了我的问题。如果有一天有人面临同样的问题,请不要在服务器端管理谓词。这意味着您必须在 Hazelcast class 路径中导入 bean class。