1

EhCache を使用してアプリケーション オブジェクトの限られたサイズのキャッシュを保存していますが、バージョンをアップグレードした後、cache.get(...)を使用するとこの例外が発生します。

java.lang.ClassCastException: net.sf.ehcache.store.chm.SelectableConcurrentHashMap$DummyPinnedKey cannot be cast to br.com.project.util.VttcElement

キャッシュされたキーに実装する必要がある新しいインターフェイスがあるかどうか、誰か知っていますか?

これが私の適応コードです:

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;

private VttcElementCache() {
    CacheManager cacheManager = CacheManager.create(METAINFFileLoader.getInputStream("ehcache.xml"));
    cache = cacheManager.getCache("br.com.project.util.VttcElement");
}

private void load(int id, long idf) {
    cache.put(new Element(new VttcElement(id, idf), "1"));
}

private String get(VttcElement vttcElement) {
    Element element = cache.get(vttcElement); //The exception is thrown here!
    (String) return elemente.getValue();
}
4

1 に答える 1

0

見つけた。

何らかの理由で、私のキー クラスVttcElementがキャッシュ内に適切に格納されていませんでした。これは、 (VttcElement) objを作成する行のequalsメソッド内で例外がスローされたためです。

コンマで連結された属性を使用してVttcElementの代わりにすべてのキーを文字列に変更し、キーとして完全に機能しました。

どうもありがとう。

于 2012-09-26T20:05:06.573 に答える