Geode区域始终为空,未提供服务器端数据

时间:2017-12-05 10:54:13

标签: java gemfire geode

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

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

我在Java中尽可能简单地启动它,只有我在official sample中可以看到的Geode Core依赖,我在代码上转换xml配置,但无论我做什么组合,我都不会能够获取远程密钥,所有区域总是返回空映射,甚至是registring ALL_KEYS兴趣。

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

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

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

如何尽可能简单地执行与gfsh相同的应用程序?我只是想连接并阅读一些地区。

1 个答案:

答案 0 :(得分:0)

使用ClientRegionShortcut.PROXY时,该区域没有本地状态,并将所有操作转发到服务器,如javadocs中所述,这就是为什么密钥不在本地存储在客户端,客户端是只是该地区的数据访问者。您需要使用ClientRegionShortcut. CACHING_PROXY代替PROXY,它与str.split()类似,但也具有本地状态。 有关此主题的更多信息也可以在Region Shortcuts and Custom Named Region Attributes

中找到

希望这有帮助。

干杯。