假设我的目标部署环境中已经运行了 Gemfire 定位器和缓存服务器进程。目标部署环境使用客户端-服务器拓扑。
我有一个 Spring 3.1 MVC 应用程序,它想要使用 Gemfire 缓存。我正在使用 Spring Data Gemfire 1.2.2 和 Gemfire 6.6.1
所以我在我的spring.xml
<util:properties id="gemfire-props">
<prop key="log-level">${gemfire.log-level}</prop>
<prop key="mcast-port">${gemfire.mcast-port}</prop>
<prop key="locators">${gemfire.locators}</prop>
</util:properties>
<gfe:cache id="gemfireCache" properties-ref="gemfire-props"/>
<gfe:replicated-region id="myCacheRegion" cache-ref="gemfireCache">
<gfe:cache-listener>
<ref bean="gemfireCacheLogListener"/>
</gfe:cache-listener>
<gfe:entry-ttl timeout="${gemfire.myCacheRegion.ttl}" action="DESTROY"/>
</gfe:replicated-region>
<bean id="gemfireCacheLogListener" class="org.awong.GemfireCacheLogListener"></bean>
<bean id="cacheManager" class="org.springframework.data.gemfire.support.GemfireCacheManager"
p:cache-ref="gemfireCache">
<property name="regions">
<set>
<ref bean="myCacheRegion"/>
</set>
</property>
</bean>
假设外部 JAR 依赖项都已在 Maven 中正确定义。还假设我加载了一个属性文件,该文件定义了上面引用的属性值。该locators
属性定义为使用已启动的 Gemfire 定位器的 IP 和端口。
我相信这应该足够好,这样我就可以在我的 MVC 应用程序中使用@Cacheable
. 我希望这些配置在应用程序服务器中启动一个定位器以连接到 Gemfire 网格,添加myCacheRegion
到 Gemfire 缓存服务器,然后cacheManager
应该能够使用新的缓存区域。
我得到BeanCreationException
s 这是由于 Spring 启动时无法连接到定位器引起的:
4-Mar-2013 16:02:08.750 SEVERE org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException:
[rest of stack trace snipped out]
nested exception is com.gemstone.gemfire.GemFireConfigException: Unable to contact a Locator service. Operation either timed out or Locator does not exist.
Configured list of locators is "[hostnameOfLocator<v0>:portOfLocator]".
但是当我部署到目标环境时,无法创建 Gemfire bean,因为定位器进程无法连接。我错过了什么?