VMware GemFire Java API Reference
Interface CacheWriter<K,V>
-
- All Superinterfaces:
CacheCallback,Declarable
- All Known Implementing Classes:
CacheWriterAdapter,JdbcWriter
public interface CacheWriter<K,V> extends CacheCallback
A user-defined object defined in theRegionAttributesthat is called synchronously before a region or entry in the cache is modified. The typical use for aCacheWriteris to update a database. Application writers should implement these methods to execute application-specific behavior before the cache is modified.Before the region is updated via a put, create, or destroy operation, GemFire will call a
CacheWriterthat is installed anywhere in any participating cache for that region, preferring a localCacheWriterif there is one. Usually there will be only oneCacheWriterin the distributed system. If there are multipleCacheWriters available in the distributed system, the GemFire implementation always prefers one that is stored locally, or else picks one arbitrarily; in any case only oneCacheWriterwill be invoked.The
CacheWriteris capable of aborting the update to the cache by throwing aCacheWriterException. This exception or any runtime exception thrown by theCacheWriterwill abort the operation and the exception will be propagated to the initiator of the operation, regardless of whether the initiator is in the same VM as theCacheWriter.WARNING: To avoid risk of deadlock, do not invoke CacheFactory.getAnyInstance() from within any callback methods. Instead use EntryEvent.getRegion().getCache() or RegionEvent.getRegion().getCache().
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidbeforeCreate(EntryEvent<K,V> event)Called before an entry is created.voidbeforeDestroy(EntryEvent<K,V> event)Called before an entry is destroyed.voidbeforeRegionClear(RegionEvent<K,V> event)Called before a region is cleared.voidbeforeRegionDestroy(RegionEvent<K,V> event)Called before a region is destroyed.voidbeforeUpdate(EntryEvent<K,V> event)Called before an entry is updated.-
Methods inherited from interface org.apache.geode.cache.CacheCallback
close
-
Methods inherited from interface org.apache.geode.cache.Declarable
init, initialize
-
-
-
-
Method Detail
-
beforeUpdate
void beforeUpdate(EntryEvent<K,V> event) throws CacheWriterException
Called before an entry is updated. The entry update is initiated by aputor agetthat causes the loader to update an existing entry. The entry previously existed in the cache where the operation was initiated, although the old value may have been null. The entry being updated may or may not exist in the local cache where the CacheWriter is installed.- Parameters:
event- an EntryEvent that provides information about the operation in progress- Throws:
CacheWriterException- if thrown will abort the operation in progress, and the exception will be propagated back to caller that initiated the operation- See Also:
Region.put(Object, Object),Region.get(Object)
-
beforeCreate
void beforeCreate(EntryEvent<K,V> event) throws CacheWriterException
Called before an entry is created. Entry creation is initiated by acreate, aput, or aget. TheCacheWritercan determine whether this value comes from agetor not by evaluating theOperation'sOperation.isLoad()method. The entry being created may already exist in the local cache where thisCacheWriteris installed, but it does not yet exist in the cache where the operation was initiated.- Parameters:
event- an EntryEvent that provides information about the operation in progress- Throws:
CacheWriterException- if thrown will abort the operation in progress, and the exception will be propagated back to caller that initiated the operation- See Also:
Region.create(Object, Object),Region.put(Object, Object),Region.get(Object)
-
beforeDestroy
void beforeDestroy(EntryEvent<K,V> event) throws CacheWriterException
Called before an entry is destroyed. The entry being destroyed may or may not exist in the local cache where the CacheWriter is installed. This method is not called as a result of expiration orRegion.localDestroy(Object).- Parameters:
event- an EntryEvent that provides information about the operation in progress- Throws:
CacheWriterException- if thrown will abort the operation in progress, and the exception will be propagated back to caller that initiated the operation- See Also:
Region.destroy(Object)
-
beforeRegionDestroy
void beforeRegionDestroy(RegionEvent<K,V> event) throws CacheWriterException
Called before a region is destroyed. TheCacheWriterwill not additionally be called for each entry that is destroyed in the region as a result of a region destroy. If the region's subregions haveCacheWriters installed, then they will be called for the cascading subregion destroys. This method is not called as a result ofRegion.close(),Cache.close(boolean), orRegion.localDestroyRegion(). However, theRegion.close()method is invoked regardless of whether a region is destroyed locally. A non-local region destroy results in an invocation of this method is followed by an invocation ofRegion.close().WARNING: This method should not destroy or create any regions itself or a deadlock will occur.
- Parameters:
event- a RegionEvent that provides information about the operation- Throws:
CacheWriterException- if thrown, will abort the operation in progress, and the exception will be propagated back to the caller that initiated the operation- See Also:
Region.destroyRegion()
-
beforeRegionClear
void beforeRegionClear(RegionEvent<K,V> event) throws CacheWriterException
Called before a region is cleared. TheCacheWriterwill not additionally be called for each entry that is cleared in the region as a result of a region clear.WARNING: This method should not clear/destroy any regions
- Parameters:
event- a RegionEvent that provides information about the operation- Throws:
CacheWriterException- if thrown, will abort the operation in progress, and the exception will be propagated back to the caller that initiated the operation- See Also:
Region.clear()
-
-