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