我正在运行Oracle coherence集群并使用扩展客户端连接到集群.
如果有多个扩展客户端继续加入和离开oracle coherence集群,则有可能一个服务创建了一些缓存并离开了集群,但这些缓存存在于集群中.
我希望在任何时间点都可以在群集中显示所有缓存名称.
是否可以获取所有缓存名称?
cacheService中有一个名为getCacheNames的API,它返回与该服务对应的所有缓存名称.
但是,如何获取属于客户端的其他服务创建的缓存名称,这些服务不再是活动但缓存存在于群集中?
[更新]: –
有一个名为’maps’的命令,它给出服务器中存在的所有缓存(由所有客户端创建).但我无法找到任何APi进行相同的操作.
是否有任何API可以执行maps命令或任何直接使用JAVA代码执行此命令的方法.
解决方法
迟到总比不到好…
这是一个粗略的例子,如果你想在生产中使用它需要一点整理…
Enumeration serviceNames = CacheFactory.getCluster().getServiceNames(); while(serviceNames.hasMoreElements()){ String serviceName = (String)serviceNames.nextElement(); Service service = null; try{ service = CacheFactory.getService(serviceName); }catch(Exception e){ continue; } if(service instanceof CacheService){ CacheService cacheService = (CacheService)service; Enumeration cacheNames = cacheService.getCacheNames(); while(cacheNames.hasMoreElements()){ String cacheName = (String)cacheNames.nextElement(); System.out.println("<<<" + cacheName); } } }