提问者:小点点

Geode地区始终为空,没有带上服务器端数据


我们正在运行Gemfire 8.1,这是我们的客户为了提供支持而选择的Geode的关键版本,当前应用程序使用的是Spring Data Gemfire,因此配置在client-config. xml和Spring Beans之间混合,并且工作正常。

我打算做一个工具应用程序来帮助一些数据操作,最初我希望在Go上做,但是Geode插件还没有准备好,我宁愿避免扰乱环境来提供RESTAPI。

我开始在Java尽可能简单,只有Geode核心依赖,我们可以看到在官方示例,我转置xml配置的代码,但无论哪个组合我做我永远无法得到远程键,所有区域总是返回空的地图,甚至注册字符串ALL_KEYS的兴趣。

我尝试直接连接到服务器而不是定位器,无论是否订阅,在我的机器上甚至直接在服务器机器上运行代码,结果总是相同的。

调试当前的应用程序代码(不是这个工具的工作代码),我倾向于说问题出在区域上,因为我试图用CacheFactory. getAnyInstance().createClientRegion onFactory(ClientRegion onSHOtcut.PROXY).create("region-name")分配一个尚未注册的区域,并且我获得了region.getAtbantes().getDataPolicy()作为EMPTY而不是NORMAL其他区域,并且我的工具具有相同的行为,所有具有DataPolicy的新区域都是EMPY

如果我通过gfsh连接,我能够列出成员和区域,我想知道gfsh和Spring Data会做什么不同的事情来处理服务器端数据。

我如何才能做一个与gfsh相同的应用程序尽可能简单?我只想连接和读取一些区域。


共1个答案

匿名用户

当使用ClientRegion on快捷方式. PROXY时,该区域没有本地状态,并将所有操作转发到服务器,如javadocs中所述,这就是为什么密钥不存储在客户端本地的原因,客户端只是该区域的数据访问器。您需要使用ClientRegion on快捷方式。CACHING_PROXY取而代之,它类似于PROXY,但也具有本地状态。有关此主题的更多信息,还可以在区域快捷方式和自定义命名区域属性中找到。

希望这有帮助。

干杯。