Java Geode区域始终为空,未带来服务器端数据

Java Geode区域始终为空,未带来服务器端数据,java,gemfire,geode,Java,Gemfire,Geode,我们正在运行Gemfire 8.1,这是我们的客户为提供支持而选择的Geode的关键版本,当前的应用程序使用的是Spring数据Gemfire,因此配置在client config.xml和Spring Beans之间混合使用,可以正常工作 我打算做一个工具应用程序来帮助一些数据操作,最初我希望在运行时做,但是Geode插件还没有准备好,我宁愿避免扰乱环境来提供RESTAPI 我用Java尽可能简单地开始它,只使用Geode核心依赖项,正如我们在中所看到的,我在代码上转换xml配置,但无论我使用

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

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

我用Java尽可能简单地开始它,只使用Geode核心依赖项,正如我们在中所看到的,我在代码上转换xml配置,但无论我使用哪种组合,我都无法获得远程密钥,所有区域总是返回空映射,甚至注册
所有密钥
兴趣

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

调试currenct应用程序代码(正在运行的代码不是这个工具),我倾向于说问题出在区域上,因为我试图用
CacheFactory.getAnyInstance().createClientRegionFactory(ClientRegionShortcut.PROXY).create(“区域名称”)
分配一个尚未注册的区域,我获得了
region.getAttributes().getDataPolicy()
作为
而不是
正常
其他区域是,我的工具具有相同的行为,所有
DataPolicy
的新区域都是
EMPY

如果我通过
gfsh
连接,我就能够列出成员和地区,我想知道
gfsh
和Spring数据有什么不同之处,才能处理服务器端数据


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

使用
ClientRegionShortcut.PROXY
时,该区域没有本地状态,并将所有操作转发到服务器,如中所述,这就是密钥不在客户端本地存储的原因,客户端只是该区域的数据访问器。您需要使用
ClientRegionShortcut。而是缓存代理
,这类似于代理,但也有本地状态。 有关此主题的更多信息,请参阅

希望这有帮助


干杯。

我当前的草稿:仍然不工作,它有本地作用域和正常的数据策略,我将检查工作应用程序是否相同。使用
所有键后工作正常
感兴趣。它还可以使用
区域。keySetOnServer()
而不是
entrySet()
keySet()
使用
代理,
keySetOnServer()
始终向服务器请求区域中存在的密钥,无论您是使用
代理
还是
缓存代理
。另外两个,
entrySet()
keySet()
,只返回本地存储在区域中的内容。