2016-09-25 52 views
1

我有一个OSGI(基于Equinox的)平台运行一个包。这束连接到Hazelcast用于检索的一些数据与:的com.MyClass反序列化过程中Hazelcast&OSGI:ClassNotFoundException

ClientConfig clientConfig = new XmlClientConfigBuilder(configIs).build(); 
clientConfig.setClassLoader(com.MyClass.class.getClassLoader()); 
HazelcastInstance instance = com.hazelcast.client.HazelcastClient.newHazelcastClient(clientConfig); 

但在运行时(instance.getMap(图).values()),我得到了跟随着例外:

com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: com.MyClass 

我真的不明白为什么Hazelcast将无法找到com.MyClass,尤其是我打电话的setClassLoader的方式()实现方法具d。 com.MyClass btw实现Serializable接口。

我知道跟OSGI整合Hazelcast似乎是一个普遍存在的难题,但我没能找到解决迄今..

任何帮助,将不胜感激:)

编辑:

  • Hazelcast版本:3.7.1
  • 当我使用内存映射格式的对象,我得到了系列化&反序列化过程中的错误。在内存映射格式中使用BINARY时,仅在反序列化期间出现错误
  • 显然这与OSGI无关。我面对与“普通”Java应用程序相同的问题。我正在使用Predicate使用values()方法时遇到问题。
+0

卡拉夫地窖使用榛木,也许你可以看看https://github.com/apache/karaf-cellar –

回答

0

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