2

Tomcat 6を使用したプロジェクトで使用しようとしています。使用EhCacheしている EhCache は、Hibernate を使用したプロジェクトで既に使用されているため、バージョン 1.4 です。私は独自のカスタム CacheEventListener (以下に含まれています) を作成しましたが、1 つの問題を除いて動作しnotifyElementExpired()ます。notifyElementExpired()キャッシュに何か他のものを追加したときにのみ呼び出されるようです。ちなみに、notifyElementPut()大丈夫と呼ばれています。

誰かがこれに対する解決策を提案できますか?

public class EhCacheEventListener implements CacheEventListener {
  private Logger log4j =
    LoggerFactory.getLogger(this.getClass().getPackage().getName());   

  public void notifyElementRemoved(Ehcache cache, Element element) throws CacheException {
    log4j.debug("cache element removed---->"+element.getKey());
  }

  public void notifyElementPut(Ehcache cache, Element element) throws CacheException {
    log4j.debug("cache element put---->"+element.getKey());
  }

  public void notifyElementUpdated(Ehcache cache, Element element) throws CacheException {
    log4j.debug("cache element updated---->"+element.getKey());
  }

  @Override
  public void notifyElementExpired(Ehcache cache, Element element) {
    //log4j.debug("Element creation time is "+element.getCreationTime());
    log4j.debug("cache element expired---->"+element.getKey());
    //log4j.debug("Element expiry time is "+element.getExpirationTime());
  }

  @Override
  public void notifyElementEvicted(Ehcache cache, Element element) {
    log4j.debug("cache element evicted---->"+element.getKey());
  }

  public void notifyRemoveAll(Ehcache cache) {}

  public void dispose() {}

  public Object clone(){
    throw new UnsupportedOperationException("Not supported yet.");
  }
}
4

1 に答える 1

2

要素はehcache、次の時点で有効期限がチェックされます。

要求が行われたときget要素が a に従って diskStore にスプールされたときMemoryStore eviction policy。有効期限スレッドが実行されるDiskStoreとき、デフォルトでは

Cache.DEFAULT_EXPIRY_THREAD_INTERVAL_SECONDS

詳細については、こちらをご覧ください: ehCache ドキュメント

于 2013-06-03T09:02:26.193 に答える