Hazelcast& OSGI:ClassNotFoundException

时间:2016-09-25 08:38:37

标签: osgi classnotfoundexception hazelcast

我有一个运行捆绑的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 的反序列化过程中,我得到了以下异常:

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无关。我正面临着与“普通”Java应用程序相同的问题。我在使用Predicate时使用values()方法时遇到了问题。

1 个答案:

答案 0 :(得分:1)

我解决了我的问题。如果有一天有人面对同一个,请不要在服务器端管理Predicate。这意味着您必须在Hazelcast类路径中导入bean类。