Serialization ream().forEach(实例->{ log.info(“注册的Hazelcast OSGI实例:{}”,Instance.getName()); }); clusterManager=新的HazelcastClusterManager(hazelcastOSGiInstance); VertxOptions options=new VertxOptions().setClusterManager(clusterManager).setHAGroup(“effectus”); Vertx.clusteredVertx(选项,分辨率->{ 如果(res.successed()){ Vertx v=分辨率结果(); info(“Vertx正在集群模式下运行:{}”,v); //更多的代码。。。
``` 所以问题是hazelcast实例无法访问vertx hazelcst捆绑包中的cleasass 我相信在某个地方有一条更短更干净的路Serialization ream().forEach(实例->{ log.info(“注册的Hazelcast OSGI实例:{}”,Instance.getName()); }); clusterManager=新的HazelcastClusterManager(hazelcastOSGiInstance); VertxOptions options=new VertxOptions().setClusterManager(clusterManager).setHAGroup(“effectus”); Vertx.clusteredVertx(选项,分辨率->{ 如果(res.successed()){ Vertx v=分辨率结果(); info(“Vertx正在集群模式下运行:{}”,v); //更多的代码。。。,serialization,osgi,hazelcast,vert.x,karaf,Serialization,Osgi,Hazelcast,Vert.x,Karaf,``` 所以问题是hazelcast实例无法访问vertx hazelcst捆绑包中的cleasass 我相信在某个地方有一条更短更干净的路 任何更好的建议都会很好。谢谢@noctarius,我只使用vertx内部使用的hazelcast 3.6.3。即使集群中只有一个节点,也会发生此错误。这只发生在Karaf/OSGi上,因此我认为可以安全地假设vertx或hazelcast不是故障,只是Karaf上的组合不起作用g、 可能,我必须亲自调查一下。我从来没有在卡拉夫上尝试过vertx。
任何更好的建议都会很好。谢谢@noctarius,我只使用vertx内部使用的hazelcast 3.6.3。即使集群中只有一个节点,也会发生此错误。这只发生在Karaf/OSGi上,因此我认为可以安全地假设vertx或hazelcast不是故障,只是Karaf上的组合不起作用g、 可能,我必须亲自调查一下。我从来没有在卡拉夫上尝试过vertx。
<bundle start-level="80">wrap:mvn:io.vertx/vertx-hazelcast/${vertx.version}</bundle>
.setClassLoader(HazelcastClusterManager.class.getClassLoader())
log.info("Hazelcast OSGi Service Reference: {}", serviceRef);
hazelcastOsgiService = context.getService(serviceRef);
log.info("Hazelcast OSGi Service: {}", hazelcastOsgiService);
hazelcastOsgiService.getClass().getClassLoader();
Map<String, SemaphoreConfig> semaphores = new HashMap<>();
semaphores.put("__vertx.*", new SemaphoreConfig().setInitialPermits(1));
Config hazelcastConfig = new Config("effectus-instance")
.setClassLoader(HazelcastClusterManager.class.getClassLoader())
.setGroupConfig(new GroupConfig("dev").setPassword("effectus"))
// .setSerializationConfig(new SerializationConfig().addClassDefinition()
.addMapConfig(new MapConfig()
.setName("__vertx.subs")
.setBackupCount(1)
.setTimeToLiveSeconds(0)
.setMaxIdleSeconds(0)
.setEvictionPolicy(EvictionPolicy.NONE)
.setMaxSizeConfig(new MaxSizeConfig().setSize(0).setMaxSizePolicy(MaxSizeConfig.MaxSizePolicy.PER_NODE))
.setEvictionPercentage(25)
.setMergePolicy("com.hazelcast.map.merge.LatestUpdateMapMergePolicy"))
.setSemaphoreConfigs(semaphores);
hazelcastOSGiInstance = hazelcastOsgiService.newHazelcastInstance(hazelcastConfig);
log.info("New Hazelcast OSGI instance: {}", hazelcastOSGiInstance);
hazelcastOsgiService.getAllHazelcastInstances().stream().forEach(instance -> {
log.info("Registered Hazelcast OSGI Instance: {}", instance.getName());
});
clusterManager = new HazelcastClusterManager(hazelcastOSGiInstance);
VertxOptions options = new VertxOptions().setClusterManager(clusterManager).setHAGroup("effectus");
Vertx.clusteredVertx(options, res -> {
if (res.succeeded()) {
Vertx v = res.result();
log.info("Vertx is running in cluster mode: {}", v);
// some more code...