2

ターゲットの展開環境で既に実行されている Gemfire ロケーターとキャッシュサーバー プロセスがあるとします。ターゲット デプロイメント環境は、クライアント/サーバー トポロジを使用します。

Gemfire キャッシュを使用したい Spring 3.1 MVC アプリケーションがあります。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 アプリケーションで Bean に@Cacheable. これらの構成により、アプリケーション サーバーでロケーターが起動され、Gemfire グリッドに接続され、Gemfire キャッシュ サーバーに追加myCacheRegionされcacheManager、新しいキャッシュ リージョンを使用できるようになるはずです。

BeanCreationExceptionSpring の起動時にロケーターへの接続に失敗したために発生した s を取得しています。

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 の作成に失敗します。私は何が欠けていますか?

4

2 に答える 2

1

ログを見ずに言うのは難しいです。構成は問題ないようです。これらのプロセスとlocator.logにどのようなエラーが表示されていますか?

これらの構成により、アプリケーションサーバーでロケーターが起動することを期待しています。

これらの構成はロケーターを起動せず、構成されたロケーターに接続するだけです。しかし、あなたは以前にロケーターがすでに開始されていると述べています。また、ロケーターを使用する場合、mcast-portは常に0である必要があります。

一般的な問題は、gemfire.jarsがすべて同じバージョンである必要があることです。SDGF1.2.2はgemfire7.0に依存しています。gemfire 6.6.1を使用している場合は、pomのspring-data-gemfireからgemfireの依存関係を除外する必要があります。

ターゲットデプロイメントは、クライアントサーバートポロジを使用します。

この構成はピアツーピア用です。それでも機能するはずですが、既存のキャッシュサーバーがある場合は、これをクライアントとして構成することをお勧めします。このリージョンは、サーバー上のオンのレプリカですか、それともローカルデータのみですか?@Cacheableが必要なだけの場合は、グリッドに接続する必要はありません。スタンドアロンの埋め込みキャッシュは正常に機能します。

于 2013-03-14T10:59:11.533 に答える
0

ロケーター プールの構成を試みることができます。たとえば、次のようになります。

<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"/>
于 2014-02-06T11:10:32.333 に答える