Hello,
hm... as far as I understand its usage in source code, the interface
org.apache.jcs.engine.behavior.ICacheObserverneeds to be implemented in order
to provide addCacheListener()methods. But only auxiliary caches seem to
implement this
interface:org.apache.jcs.auxiliary.lateral.LateralCacheWatchRepairable
andorg.apache.jcs.auxiliary.remote.RemoteCacheWatchRepairable(and thus its
subclasses).
I see no other way to set/add an event queue to a cache region through API.
It's rather created in the constructors of certain auxiliary caches; e.g.
org.apache.jcs.auxiliary.lateral.LateralCacheNoWait:
public class LateralCacheNoWait implements AuxiliaryCache {
...
private ICacheEventQueue q;
...
public LateralCacheNoWait( LateralCache cache ) {
this.cache = cache;
...
CacheEventQueueFactory fact = new CacheEventQueueFactory();
this.q = fact.createCacheEventQueue( new CacheAdaptor( cache ),
LateralCacheInfo.listenerId, cache
.getCacheName(),
cache.getAuxiliaryCacheAttributes().getEventQueuePoolName(), cache
.getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode() );
...
}
...
}
Taking all together it seems to be a feature only for auxiliary caches. But
maybe this gives you
enough information to deeper dig into JCS' event queues.
Justin Gordon <[email protected]> hat am 31. Januar 2009 um 09:26
geschrieben:
> I want to add JSR 107 like listeners to a JCS region.
>
> I tried this but it didn't work:
>
> ICacheListener cacheEventListener = new
>JcsCacheEventListenerAdapter(this, myListener);
> CacheEventQueueFactory factory = new CacheEventQueueFactory();
> ICacheEventQueue cacheEventQueue =
>factory.createCacheEventQueue(cacheEventListener,
> 0,
>
>m_cacheName,
> "",
>
>ICacheEventQueue.SINGLE_QUEUE_TYPE);
>
>
> This compiles but the listener does not get notified. Is there something I
> need to do to start the queue?
>
> Thanks,
>
> Justin
--
Thorben Betten