Package com.ibm.websphere.cache
Interface DistributedNioMap
- All Known Implementing Classes:
DistributedObjectCache
public interface DistributedNioMap
The DistributedNioMap is a high performance
map specifically designed for storing
java.nio.Buffer objects. When a cached object
is being removed from cache and the cached
object implements the DistributedNioMapObject
interface, the DistributedNioMapObject.release()
method will be called to notify the cache object
it is being removed from cache.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds an alias for the given key in the cache's mapping table.boolean
addChangeListener
(ChangeListener listener) addChangeListener - adds a change listener for this DistributedMap.boolean
addInvalidationListener
(InvalidationListener listener) addInvalidationListener - adds an invalidation listener for this DistributeMap.boolean
addPreInvalidationListener - adds a pre-invalidation listener for this DistributeMap.void
clear()
Removes all mappings from this DistributedNioMap.boolean
containsKey
(Object key, boolean includeDiskCache) Returns true if this map contains mapping for the specified key.boolean
enableListener
(boolean enable) enableListener - enable or disable the invalidation and change listener support.getCacheEntry
(Object key) Returns the cache entry which maps the specified key.void
invalidate
(Object key) Invalidates the given key.void
invalidate
(Object key, boolean wait) Invalidates the given key.void
invalidate
(Object key, boolean wait, boolean checkPreInvalidationListener) invalidate - invalidates the given key.boolean
isEmpty
(boolean includeDiskCache) Returns true if this map contains no key-value mappings.void
put
(Object key, Object value, Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map.void
put
(Object key, Object value, Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, Object[] dependencyIds, Object[] alias, boolean skipMemoryAndWriteToDisk) Associates the specified value with the specified key in this map.void
put
(Object key, Object value, Object userMetaData, int priority, int timeToLive, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map.putAndGet
(Object key, Object value, Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map.putAndGet
(Object key, Object value, Object userMetaData, int priority, int timeToLive, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map.void
releaseLruEntries
(int numOfEntries) Use this method to release LRU cache entries (regular objects or ByteByffers/MetaData).void
removeAlias
(Object alias) Removes an alias from the cache's mapping table.boolean
removeChangeListener
(ChangeListener listener) removeChangeListener - removes a change listener for this DistributedMap.boolean
removeInvalidationListener - removes an invalidation listener for this DistributedMap.boolean
removePreInvalidationListener - removes a pre-invalidation listener for this DistributedMap.int
size
(boolean includeDiskCache) Returns the total number of key-value mappings.
-
Method Details
-
getCacheEntry
Returns the cache entry which maps the specified key. Returns null if specified key does not exist in cache's mapping table or the cache entry is in invalidated state.
You must call CacheEntry.finish() when you are finished using the entry. This will release resources associated with this CacheEntry.- Parameters:
key
- key whose associated value is to be returned.- Returns:
- the cache entry to which maps the specified key, or null if the specified key does not exist or the cache entry is in invalidated state.
- Throws:
ClassCastException
- if the key is not of an inappropriate type for this map. (Currently supports only type String)NullPointerException
- key is null and this map does not not permit null keys.
-
put
void put(Object key, Object value, Object userMetaData, int priority, int timeToLive, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.- Parameters:
key
- key with which the specified value is to be associated.value
- value to be associated with the specified key.userMetaData
- userMetaData for the cache entry.priority
- the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.timeToLive
- the time in seconds that the cache entry should remain in the cachesharingPolicy
- how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.dependencyIds
- an optional set of dependency ids to associate with the cache entryalias
- an optional set of alias ids to associate with the cache entry- Throws:
UnsupportedOperationException
- if the put operation is not supported by this map.ClassCastException
- if the class of the specified key or value prevents it from being stored in this map.IllegalArgumentException
- if some aspect of this key or value prevents it from being stored in this map.NullPointerException
- this map does not permit null keys or values, and the specified key or value is null.- See Also:
-
put
void put(Object key, Object value, Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.- Parameters:
key
- key with which the specified value is to be associated.value
- value to be associated with the specified key.userMetaData
- userMetaData for the cache entry.priority
- the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.timeToLive
- the time in seconds that the cache entry should remain in the cacheinactivityTime
- the time in seconds that a cache entry should remain in the cache if not accessed. inactivityTime is reset to 0 every time an entry is accessed.sharingPolicy
- how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.dependencyIds
- an optional set of dependency ids to associate with the cache entryalias
- an optional set of alias ids to associate with the cache entry- Throws:
UnsupportedOperationException
- if the put operation is not supported by this map.ClassCastException
- if the class of the specified key or value prevents it from being stored in this map.IllegalArgumentException
- if some aspect of this key or value prevents it from being stored in this map.NullPointerException
- this map does not permit null keys or values, and the specified key or value is null.- See Also:
-
put
void put(Object key, Object value, Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, Object[] dependencyIds, Object[] alias, boolean skipMemoryAndWriteToDisk) throws DynamicCacheException Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.- Parameters:
key
- key with which the specified value is to be associated.value
- value to be associated with the specified key.userMetaData
- userMetaData for the cache entry.priority
- the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.timeToLive
- the time in seconds that the cache entry should remain in the cacheinactivityTime
- the time in seconds that a cache entry should remain in the cache if not accessed. inactivityTime is reset to 0 every time an entry is accessed.sharingPolicy
- how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL. If skipMemoryAndWriteToDisk is set to true, the sharing policy will be set to "not-shared".dependencyIds
- an optional set of dependency ids to associate with the cache entryalias
- an optional set of alias ids to associate with the cache entryskipMemoryAndWriteToDisk
- if true, the cache entry will not put in the memory cache but written to disk cache directly. When getting the entry from the disk cache, the entry will not be promoted to the memory cache instead it will be passed it to the caller. In addition, the entry will not be replicated to other servers. The sharing policy will be set to "not-shared".- Throws:
UnsupportedOperationException
- if the put operation is not supported by this map.ClassCastException
- if the class of the specified key or value prevents it from being stored in this map.IllegalArgumentException
- if some aspect of this key or value prevents it from being stored in this map.NullPointerException
- this map does not permit null keys or values, and the specified key or value is null.DynamicCacheException
- When skipMemoryAndWriteToDisk is set to true, the following exceptions which extend DynamicCacheException can occur: (1) DiskOffloadNotEnabledException The code detects that the disk offload feature for cache instance is not enabled. The put operation is aborted. (2) DiskIOException The code detects an unrecoverable disk IO exception when putting cache entry to the disk. The disk offload feature will be disabled. (3) DiskSizeOverLimitException The code detects out of disk space or the disk cache size has reached the limit of diskCacheSizeInGB. The put operation is aborted. (4) SerializationException The code detects a serialization exception when serializing the cache entry. The put operation is aborted. (5) DiskSizeInEntriesOverLimitException The disk cache size in entries has reached the limit of diskCacheSize. The put operation is aborted. (6) DiskCacheEntrySizeOverLimitException The disk cache entry size has reached the limit of diskCacheEntrySizeInMB. The put operation is aborted. (7) MiscellaneousException The code detects a runtime exception other than a disk IO exception. The put operation is aborted.- See Also:
-
putAndGet
CacheEntry putAndGet(Object key, Object value, Object userMetaData, int priority, int timeToLive, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.- Parameters:
key
- key with which the specified value is to be associated.value
- value to be associated with the specified key.userMetaData
- userMetaData for the cache entry.priority
- the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.timeToLive
- the time in seconds that the cache entry should remain in the cachesharingPolicy
- how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.dependencyIds
- an optional set of dependency ids to associate with the cache entryalias
- an optional set of alias ids to associate with the cache entry- Returns:
- The newly created CacheEntry. You must call CacheEntry.finish() when you are finished using the entry.
- Throws:
UnsupportedOperationException
- if the put operation is not supported by this map.ClassCastException
- if the class of the specified key or value prevents it from being stored in this map.IllegalArgumentException
- if some aspect of this key or value prevents it from being stored in this map.NullPointerException
- this map does not permit null keys or values, and the specified key or value is null.- See Also:
-
putAndGet
CacheEntry putAndGet(Object key, Object value, Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, Object[] dependencyIds, Object[] alias) Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.- Parameters:
key
- key with which the specified value is to be associated.value
- value to be associated with the specified key.userMetaData
- userMetaData for the cache entry.priority
- the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.timeToLive
- the time in seconds that the cache entry should remain in the cacheinactivityTime
- the time in seconds that a cache entry should remain in the cache if not accessed. inactivityTime is reset to 0 every time an entry is accessed.sharingPolicy
- how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.dependencyIds
- an optional set of dependency ids to associate with the cache entryalias
- an optional set of alias ids to associate with the cache entry- Returns:
- The newly created CacheEntry. You must call CacheEntry.finish() when you are finished using the entry.
- Throws:
UnsupportedOperationException
- if the put operation is not supported by this map.ClassCastException
- if the class of the specified key or value prevents it from being stored in this map.IllegalArgumentException
- if some aspect of this key or value prevents it from being stored in this map.NullPointerException
- this map does not permit null keys or values, and the specified key or value is null.- See Also:
-
invalidate
invalidate - invalidates the given key. If the key is for a specific cache entry, then only that object is invalidated. If the key is for a dependency id, then all objects that share that dependency id will be invalidated.- Parameters:
key
- the key which will be invalidatedwait
- if true, then the method will not complete until the invalidation has occured. if false, then the invalidation will occur in batch modecheckPreInvalidationListener
- if true, first check with PreInvalidationListener to see if invalidation should occur. If false, bypass this check and invalidate immediately.- See Also:
-
invalidate
Invalidates the given key. If the key is for a specific cache entry, then only that object is invalidated. If the key is for a dependency id, then all objects that share that dependency id will be invalidated.- Parameters:
key
- the key which will be invalidatedwait
- if true, then the method will not complete until the invalidation has occured. if false, then the invalidation will occur in batch mode
-
invalidate
Invalidates the given key. If the key is for a specific cache entry, then only that object is invalidated. If the key is for a dependency id, then all objects that share that dependency id will be invalidated. This method is the same as using invalidate(key, true).- Parameters:
key
- the key which will be invalidated
-
clear
void clear()Removes all mappings from this DistributedNioMap. -
addAlias
Adds an alias for the given key in the cache's mapping table. If the alias is already associated with another key, it will be changed to associate with the new key.- Parameters:
key
- the key assoicated with aliasaliasArray
- the alias to use for lookups- Throws:
IllegalArgumentException
- if the key is not in the cache's mapping table.
-
removeAlias
Removes an alias from the cache's mapping table.- Parameters:
alias
- the alias to move out of the cache's mapping table
-
releaseLruEntries
void releaseLruEntries(int numOfEntries) Use this method to release LRU cache entries (regular objects or ByteByffers/MetaData).- Parameters:
numOfEntries
- the number of cache entries to be released
-
size
int size(boolean includeDiskCache) Returns the total number of key-value mappings. Returns size of memory map plus disk map if includeDiskCache is true. Returns size of memory map size if includeDiskCache is false.- Parameters:
includeDiskCache
- true to get the size of the memory and disk maps; false to get the size of memory map.- Returns:
- the number of key-value mappings in this map.
-
isEmpty
boolean isEmpty(boolean includeDiskCache) Returns true if this map contains no key-value mappings. Checks both memory and disk maps if includeDiskCache is true. Check only memory cache if includeDiskCache is false.- Parameters:
includeDiskCache
- true to check the memory and disk maps; false to check the memory map.- Returns:
- true if this map contains no key-value mappings.
-
containsKey
Returns true if this map contains mapping for the specified key. Checks both memory and disk map if includeDiskCache is true. Check only memory map if includeDiskCache is false.- Parameters:
key
- whose presence in this map is to be tested.includeDiskCache
- true to check the specified key contained in the memory or disk maps; false to check the specified key contained in the memory map.- Returns:
- true if this map contains a mapping for the specified key.
-
enableListener
boolean enableListener(boolean enable) enableListener - enable or disable the invalidation and change listener support. You must call enableListener(true) before calling addInvalidationListner() or addChangeListener().- Parameters:
enable
- - true to enable support for invalidation and change listeners or false to disable support for invalidation and change listeners- Returns:
- boolean "true" means listener support was successfully enabled or disabled. "false" means this DistributedMap is configurated to use the listener's J2EE context for event notification and the callback registration failed. In this case, the caller's thread context will be used for event notification.
-
addInvalidationListener
addInvalidationListener - adds an invalidation listener for this DistributeMap.- Parameters:
listener
- the invalidation listener object- Returns:
- boolean "true" means the invalidation listener was successfully added. "false" means either the passed listener object is null or listener support is not enable.
- See Also:
-
removeInvalidationListener
removeInvalidationListener - removes an invalidation listener for this DistributedMap.- Parameters:
listener
- the invalidation listener object- Returns:
- boolean "true" means the invalidation listener was successfully removed. "false" means either passed listener object is null or listener support is not enable.
- See Also:
-
addChangeListener
addChangeListener - adds a change listener for this DistributedMap.- Parameters:
listener
- the change listener object- Returns:
- boolean "true" means the change listener was successfully added. "false" means either the passed listener object is null or listener support is not enable.
- See Also:
-
removeChangeListener
removeChangeListener - removes a change listener for this DistributedMap.- Parameters:
listener
- the change listener object- Returns:
- boolean "true" means the change listener was successfully removed. "false" means either passed listener object is null or listener support is not enable.
- See Also:
-
addPreInvalidationListener
addPreInvalidationListener - adds a pre-invalidation listener for this DistributeMap. If one already exists, this method will over-write it.- Parameters:
listener
- the pre-invalidation listener object- Returns:
- boolean "true" means the pre-invalidation listener was successfully added. "false" means either the passed listener object is null or listener support is not enabled.
- See Also:
-
removePreInvalidationListener
removePreInvalidationListener - removes a pre-invalidation listener for this DistributedMap.- Parameters:
listener
- the invalidation listener object- Returns:
- boolean "true" means the pre-invalidation listener was successfully removed. "false" means either passed listener object is null or listener support is not enabled.
- See Also:
-