当前位置: 首页 > 知识库问答 >
问题:

Spring Data Gemfire配置未连接到定位器?

冯淳
2023-03-14

假设我有Gemfire定位器

我有一个Spring 3.1 MVC应用程序,它想要使用Gemfire缓存。我使用的是Spring数据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中正确定义。还假设我加载了一个属性文件,该文件定义了上面引用的属性值。定位器属性定义为使用已经启动的Gemfire定位器的IP和端口。

我相信这应该足够好,这样我就可以在我的MVC应用程序中使用@Cacheable注释bean。我希望这些配置在应用程序服务器中启动一个定位器以连接到金火网格,将myCacheArea添加到金火缓存服务器,然后cacheManager应该能够使用新的缓存区域。

我得到的异常是由于Spring启动时未能连接到定位器引起的:

4-Mar-2013 16:02:08.750 SEVERE org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable
 org.springframework.html" target="_blank">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。我错过了什么?

共有2个答案

姜奇
2023-03-14

您可以尝试配置定位器池,例如:

<gfe:pool id="locatorPool">
    <gfe:locator host="host1" port="port1"/>
    <gfe:locator host="host2" port="port2"/>
</gfe:pool>

然后将缓存链接到此池:

<gfe:cache id="gemfireCache" pool-name="locatorPool"/>
赫连昕
2023-03-14

很难说没有看到日志。您的配置看起来正常。在这些过程和定位器中,您看到了哪些错误。日志

我希望这些配置在应用程序服务器中启动一个定位器。

这些配置不会启动定位器,仅连接到已配置的定位器。但是您在前面声明定位器已经启动。此外,使用定位器时,mcast端口应始终为0。

一个常见的问题是gemfire.jars必须都在同一个版本。SDGF 1.2.2依赖于gemfire 7.0。如果您使用的是gemfire 6.6.1,您需要在pom中从spring-data-gemfire中排除gemfire依赖项。

目标部署使用客户端-服务器拓扑。

此配置用于点对点。它应该仍然有效,但是如果您有现有的缓存服务器,您可能希望将其配置为客户端。此区域是服务器上的副本还是仅本地数据?请注意,如果您只需要@Cacheable,则不需要连接到网格。独立的嵌入式缓存可以正常工作。

 类似资料:
  • detachedException:无法执行查询。未配置连接org.jooq.impl.abstractquery.execute(abstractquery.java:316)org.jooq.impl.abstractresultquery.fetchlazy(abstractresultquery.java:365)org.jooq.impl.abstractresultquery.fetc

  • 问题内容: 我试图在Mac Mini上配置Jenkins,以便从BitBucket存储库中提取iPhone App的代码。在“ Xcode插件”配置区域中,我尝试添加项目的git地址,但是它一直失败。经过研究,看来我必须使用ssh部署密钥来连接Bitbucket和Jenkins。到目前为止,我所做的是: 并且我将此SSH密钥添加到了我的BitBucket配置文件中。 不幸的是,它仍然无法正常工作。

  • 我的Spring Boot应用程序与Spring云配置服务器连接以获取外部化属性,但突然没有与配置服务器连接/对话。我做了很多改变,不确定哪一个会导致这个问题。 > 我验证了我的Spring Boot应用程序中的bootstrap.yml文件,以下配置存在,并且Spring云配置服务器正在该位置运行 spring:application:name:abc cloud:config:uri:http

  • 我使用的是Windows 7 64位计算机,目标SDK版本是23。

  • 我最近创建了一个新的本地repo,并从我们的远程存储库中提取了一些代码。 当我打开项目时,我在控制台中收到一条消息: 我按照这里的说明设置环境变量(Im in a Mac),并检查了我的local.properties: 所以,这两件事都解决了,我仍然得到这个错误。我已经搜索过了,但是没有一个解决方案对我有效。 有什么帮助吗?非常感谢。 编辑: 这只发生在一个项目中。其余的项目运行良好。

  • “无法加载db驱动程序类:com.microsoft.sqlserver.jdbc.sqlserverdriver” 有什么想法如何构造连接字符串吗?考虑servername=servername。