79789517

Date: 2025-10-13 17:48:03
Score: 1
Natty:
Report link

import javax.cache.event.*;

import javax.cache.Cache;

public class JCachePutTraceListener

implements CacheEntryCreatedListener\<Object, Object\>,

           CacheEntryUpdatedListener\<Object, Object\> {

@Override

public void onCreated(Iterable<CacheEntryEvent<?, ?>> events) throws CacheEntryListenerException {

for (CacheEntryEvent\<?, ?\> e : events) {

  System.out.println("\[JCache\] CREATED key=" + e.getKey());

  new RuntimeException("JCache PUT caller trace").printStackTrace();

}

}

@Override

public void onUpdated(Iterable<CacheEntryEvent<?, ?>> events) throws CacheEntryListenerException {

for (CacheEntryEvent\<?, ?\> e : events) {

  System.out.println("\[JCache\] UPDATED key=" + e.getKey());

  new RuntimeException("JCache PUT caller trace").printStackTrace();

}

}

}

import javax.cache.Cache;
import javax.cache.configuration.MutableCacheEntryListenerConfiguration;
import javax.cache.configuration.FactoryBuilder;

Cache<Object,Object> cache = cacheManager.getCache("yourCache");

MutableCacheEntryListenerConfiguration<Object,Object> cfg =
    new MutableCacheEntryListenerConfiguration<>(
        FactoryBuilder.factoryOf(JCachePutTraceListener.class),
        null,          // no filter
        false,         // old value not required
        true           // **synchronous** => runs on the caller thread
    );

cache.registerCacheEntryListener(cfg);
Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • Contains question mark (0.5):
  • User mentioned (1): @Override
  • Low reputation (1):
Posted by: Ashish S