OSGI环境中的Hazelcast类加载器配置?

时间:2018-03-05 19:43:28

标签: osgi classloader hazelcast

我目前正在使用此配置在hazelcast实例中设置类加载器。

 Config config = new XmlConfigBuilder(HAZELCAST_CONFIG).build();
 config.setInstanceName(HAZELCAST_INSTANCE_NAME);
 config.setClassLoader(MyClassA.class.getClassLoader());

这适用于具有MyClassA元素的地图。

是否有可能只有一个hazelcast实例来配置类加载器以包含我项目的所有类?

我在OSGI环境中有多个捆绑包。

1 个答案:

答案 0 :(得分:0)

从多个bundle中查看类的问题是,不同的bundle可以包含具有匹配名称但实现不同的类。例如,捆绑A可以包含类org.example.Foo版本1.0,但捆绑B可以具有类org.example.Foo版本2.0。

我建议创建一个捆绑包,准确定义Hazelcast应该看到哪些类型。它只需导入具有受控版本范围的包即可。您现在可以将此捆绑的ClassLoader与Hazelcast一起使用。

不幸的是,在OSGi中没有直接访问bundle的ClassLoader的标准方法。但是,您只需几行代码就可以编写一个ClassLoader,从其Bundle.loadClass方法委托给loadClass方法。