アプリケーションで EhCache を分散キャッシュとして使用しようとしています。EhCache インスタンスはサーバーに組み込まれており、terracota クラスターを使用しました。
すべてのサーバー (および ehcache) インスタンスは、この tc に正常に接続します。各キャッシュへの挿入、更新、および取得に成功しました。ただし、キャッシュを反復処理することはできません。
キャッシュを間違った方法で構成した可能性がありますが、反復子メソッドはまだ実装されていないようです (org.ehcache.clustered.client.internal.store.ClusteredStore 内):
@Override
public Iterator<Cache.Entry<K, ValueHolder<V>>> iterator() {
// TODO: Make appropriate ServerStoreProxy call
throw new UnsupportedOperationException("Implement me");
}
キャッシュ構成は次のようになります。
<service>
<tc:cluster>
<tc:connection url="terracotta://10.23.69.20:9510/clustered"/>
<tc:server-side-config auto-create="true">
<tc:default-resource from="default-resource"/>
</tc:server-side-config>
</tc:cluster>
</service>
<cache-template name="CacheTemplate">
<resources>
<tc:clustered-dedicated unit="MB">16</tc:clustered-dedicated>
</resources>
<tc:clustered-store consistency="strong"/>
</cache-template>
<cache alias="CacheDaemon" uses-template="CacheTemplate">
<key-type>java.lang.String</key-type>
<value-type>com.server.cache.DaemonInstance</value-type>
</cache>
<cache alias="CacheProperty" uses-template="CacheTemplate">
<key-type>java.lang.String</key-type>
<value-type>java.lang.String</value-type>
</cache>
キーリストを取得しても、他の方法は見つかりませんでした。
では、キャッシュの設定を間違えたのでしょうか? それとも、EhCache 分散モードがこの方法と完全に互換性がないということですか (そのため、EhCache は使用しません)。