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

问题描述 投票:0回答:1

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

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

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

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

我在OSGI环境中有多个包。

osgi classloader hazelcast
1个回答
0
投票

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

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

遗憾的是,没有一种标准方法可以直接访问OSGi中捆绑的ClassLoader。但是,您可以在几行代码中编写一个ClassLoader,它从Bundle.loadClass方法委托给loadClass方法。

© www.soinside.com 2019 - 2024. All rights reserved.