Создайте абстрактный класс, который регистрирует события, которые вы хотите записать. Это работает для меня, чтобы захватить два события.
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);