1

アプリケーションで Apache JCS を使用して、アプリケーションの起動時に一般的に使用されるデータをキャッシュしています。ただし、キャッシュ内のデータの一部がアイドル時間まで使用されない場合は、データベースからその値を手動でリロードしたいと考えています。

したがって、基本的には、キーがアイドル時間に達したためにキーがキャッシュから削除される瞬間をJavaプログラムが認識できるように、JCSイベントをオーバーライドしたいと考えています。

4

1 に答える 1

0

キャプチャしたいイベントを登録する抽象クラスを作成します。これは、2 つのイベントをキャプチャするのに役立ちます。

private static final Set<Integer> EVENTS = new HashSet<Integer>();
{
  EVENTS.add(IElementEventHandler.ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND);
  EVENTS.add(IElementEventHandler.ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND);
}
@Override
 public synchronized void handleElementEvent(IElementEvent event) {
 // Check for element expiration based on EVENTS.
 LOG.debug("Handling event of type : " + event.getElementEvent() + ".");
 if (EVENTS.contains(event.getElementEvent())) {
  ElementEvent elementEvent = (ElementEvent)event;
  CacheElement element = (CacheElement)elementEvent.getSource();
  handleEvent(element);
   }

 }
// Abstract method to handle events
 protected abstract void handleEvent(CacheElement element);
}

次のように、この抽象イベント ハンドラを jcs ファクトリ定義に追加します。

 JCS jcs = JCSCacheFactory.getCacheInstance(regionName);
 IElementAttributes attributes = jcs.getDefaultElementAttributes();
 attributes.addElementEventHandler(handler);
 jcs.setDefaultElementAttributes(attributes);
于 2012-12-11T00:33:24.737 に答える