在缓存GemFireCache中找不到Region

时间:2017-01-23 17:02:19

标签: gemfile spring-data-gemfire

Caused by: org.springframework.beans.factory.BeanInitializationException: Cannot find region [record] in cache GemFireCache[id = 20255495; 
isClosing = false; isShutDownAll = false;
 closingGatewayHubsByShutdownAll = false; created = Mon Jan 23 11:45:10 EST 2017; server = false; copyOnRead = false; lockLease = 120; lockTimeout = 60]
    at org.springframework.data.gemfire.RegionLookupFactoryBean.lookupFallback(RegionLookupFactoryBean.java:72)
    at org.springframework.data.gemfire.RegionLookupFactoryBean.afterPropertiesSet(RegionLookupFactoryBean.java:59)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
    ... 13 more

我的XML文件是:

<beans>

    ....

    <context:component-scan base-package="spring.gemfire.repository.deptemp"/>

    <gfe:client-cache id="gemfireCache" pool-name="gfPool"/>

    <!--Region for being used by the Record Bean -->
    <gfe:replicated-region id="record" cache-ref="gemfireCache"/>

    <bean id="record" class="spring.gemfire.repository.deptemp.beans.Record"/>

    <gfe:pool id="gfPool" max-connections="10" subscription-enabled="true" >  
        <gfe:locator host="localhost" port="10334"/>        
    </gfe:pool>   

    <gfe:lookup-region id="record" />  
    <gfe-data:repositories base-package="spring.gemfire.repository.deptemp.repos"/>  

</beans>

1 个答案:

答案 0 :(得分:0)

Abhisekh -

为什么你有这两个......

<gfe:replicated-region id="record" cache-ref="gemfireCache"/>

这就是......

<gfe:lookup-region id="record" />

另外,你已经定义了这个......

<bean id="record" class="spring.gemfire.repository.deptemp.beans.Record"/>

基于&#34; order&#34;哪个(最明确地)覆盖你的REPLICATE Region bean定义(也包括id="record")。您在上面定义的XML中的bean定义。

虽然 Spring 首先遵守bean定义之间的依赖顺序,但是当没有依赖(显式或隐式)存在时,它通常会遵循声明的顺序。

由于<bean id="record" .../>位于<gfe:replicated-region id="record" ../>之后,<bean id=记录../>会覆盖<gfe:replicated-region id="record"/> bean定义。

此外,由于您未使用GemFire / Geode的本机配置(例如<gfe:lookup-region>)或群集配置服务,因此不需要cache.xml

此外,您宣布ClientCache,因此技术上可能希望<gfe:client-region>与GemFire / Geode服务器区域匹配,是吗?!

虽然您可以在客户端上创建REPLICATE区域(甚至PARTITION区域),但您通常不这样做,因为这些区域不是任何分布式系统或GemFire集群的一部分&#34; Server&#34;节点

客户端区域(可以是PROXY,甚至是CACHING_PROXY)会将数据操作分发到服务器。此外,如果您拥有只有特定客户需要的数据,那么您应该使用<gfe:local-region>创建本地区域。

我肯定会读到这个,首先......

http://gemfire.docs.pivotal.io/geode/basic_config/book_intro.html

接着是下一个......

http://gemfire.docs.pivotal.io/geode/topologies_and_comm/book_intro.html

然后这......

http://gemfire.docs.pivotal.io/geode/developing/book_intro.html

最后......

http://docs.spring.io/spring-data-gemfire/docs/current/reference/html/#bootstrap

-John