0

私は比較的新しくehcache、自分のアプリケーション (サンプル アプリケーション) にキャッシングを実装しようとしています。現在、いくつかのデータ オブジェクトに対して RMI レプリケーションを使用してキャッシュ レプリケーションを使用しようとしています。同じマシンで実行されている tomcat の 2 つのインスタンスがあり、同じアプリケーションが両方のインスタンスにデプロイされています。オブジェクトキャッシュの取得時に適切にヒットし、パフォーマンスが向上していることを確認しました。

しかし、最初のインスタンスで新しいオブジェクトを作成し、2 番目のインスタンス (すべてのオブジェクトを一覧表示するページがあります) で取得しようとすると、新しく追加されたオブジェクトが表示されません。

オブジェクトが 2 番目のインスタンスのキャッシュにあることがわかります。また、次のメッセージを見たログでも確認されています

2012-07-03 17:06:41,471 [RMI TCP 接続 (6)-192.168.100.105] DEBUG distribution.RMICachePeer - キャッシュ com.mycompany.session.Session の RMICachePeer: リモート書き込みを受信しました。要素は次のとおりです。

以前にこの種の動作を見た人はいますか?何が問題なのかを理解するのに役立ちますか?

以下は、私のehcache.xmlファイルの内容です

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="ehcache.xsd" >

<diskStore path="D:\\Cache1"/>

<cacheManagerPeerProviderFactory
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
    properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,         hostName=192.168.100.105, multicastGroupPort=4446, timeToLive=32"
/>

<cacheManagerPeerListenerFactory 
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=192.168.100.105, port=40001, socketTimeoutMillis=5000"
/>

<cache name="com.mycompany.session.Session"
      maxElementsInMemory="100"
      eternal="true"
      overflowToDisk="true">
      <cacheEventListenerFactory 
            class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
            properties="replicateAsynchronously=false
                       replicatePutsViaCopy=true,
                       replicateUpdatesViaCopy=true,
                       replicatePuts=true,
                       replicateUpdates=true,
                       replicateRemovals=true"/>
      <bootstrapCacheLoaderFactory 
        class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
</cache>

<defaultCache
       maxElementsInMemory="100"
       eternal="true"
       overflowToDisk="true"
/>

</ehcache>

tomcat の 2 番目のインスタンスも、diskStore パスが「D://Cache2」であり、ピア リスナー ポートが 40002 であることを除いて、同様の ehcache 構成を持っています。

あなたの助けに感謝。

4

1 に答える 1

0

cacheManagerPeerProviderFactory でポート番号を設定していないようです。server2 の設定を別の方法にする必要があります。

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=localhost, port=50001,socketTimeoutMillis=2000"/>
于 2012-07-13T04:40:28.057 に答える