私は比較的新しく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 構成を持っています。
あなたの助けに感謝。