Package org.apache.openjpa.datacache
Class PartitionedDataCache
- java.lang.Object
-
- org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
-
- org.apache.openjpa.datacache.AbstractDataCache
-
- org.apache.openjpa.datacache.ConcurrentDataCache
-
- org.apache.openjpa.datacache.PartitionedDataCache
-
- All Implemented Interfaces:
java.io.Serializable
,DataCache
,RemoteCommitListener
,Configurable
,Clearable
,Closeable
,EventManager
public class PartitionedDataCache extends ConcurrentDataCache
A partitioned data cache maintains a set of partitions that are DataCache themselves. Each of the partitioned DataCaches can be individually configured. However, all partitions must be of the same type. By default, this cache uses ConcurrentDataCache as its partitions.
This cache can be configured as a plug-in as follows:
<property name='openjpa.DataCache" value="partitioned(name=X, PartitionType=concurrent,Partitions='(name=a,cacheSize=100), (name=b,cacheSize=200)')
Notice that the individual partition properties are enclosed parentheses, separated by comma and finally the whole property string is enclosed in single quote. Each partition must have a non-empty name that are unique among the partitions. The policy can return the name of a partition to distribute the managed instances to be cached in respective partition. The above configuration will configure a partitioned cache namedX
with two partitions nameda
andb
with cache size100
and200
respectively. Besides the two partitions, this cache instance itself can store data and referred by its own name (X
in the above example).- Since:
- 2.0.0
- Author:
- Pinaki Poddar
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.openjpa.datacache.ConcurrentDataCache
_lru
-
Fields inherited from class org.apache.openjpa.datacache.AbstractDataCache
_evictOnBulkUpdate, _excludedTypes, _includedTypes, _stats, conf, log
-
Fields inherited from class org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
_listeners
-
Fields inherited from interface org.apache.openjpa.datacache.DataCache
NAME_DEFAULT
-
-
Constructor Summary
Constructors Constructor Description PartitionedDataCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
endConfiguration()
Invoked upon completion of bean property configuration for this object.DataCache
getPartition(java.lang.String name, boolean create)
Gets the named partition.java.util.Set<java.lang.String>
getPartitionNames()
Gets the name of the configured partitions.java.util.List<java.lang.String>
getPartitions()
Returns the individual partition configuration properties.void
initialize(DataCacheManager mgr)
Initialize any resources associated with the givenDataCacheManager
.boolean
isPartitioned()
Always returns true.void
setPartitions(java.lang.String parts)
Set partitions from a String configuration.void
setPartitionType(java.lang.String type)
Sets the type of the partitions.-
Methods inherited from class org.apache.openjpa.datacache.ConcurrentDataCache
clearInternal, getCacheMap, getCacheSize, getInternal, getLru, getSoftReferenceSize, newCacheMap, pinInternal, putInternal, recacheUpdates, removeAllInternal, removeInternal, setCacheSize, setLru, setSoftReferenceSize, unpinAll, unpinInternal, writeLock, writeUnlock
-
Methods inherited from class org.apache.openjpa.datacache.AbstractDataCache
addExpirationListener, afterCommit, clear, close, close, commit, contains, containsAll, fireEvent, get, getAll, getEnableStatistics, getEvictionSchedule, getEvictOnBulkUpdate, getExcludedTypes, getName, getStatistics, getTypes, isClosed, keyRemoved, pin, pinAll, pinAll, put, putAllInternal, remove, removeAll, removeAll, removeAllInternal, removeAllTypeNamesInternal, removeExpirationListener, selectCache, setConfiguration, setEnableStatistics, setEvictionSchedule, setEvictOnBulkUpdate, setExcludedTypes, setExcludedTypes, setName, setTypes, setTypes, startConfiguration, toString, unpin, unpinAll, update
-
Methods inherited from class org.apache.openjpa.lib.util.concurrent.AbstractConcurrentEventManager
addListener, fireEvent, getListeners, hasListener, hasListeners, isFailFast, newListenerCollection, removeListener, setFailFast
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.openjpa.event.RemoteCommitListener
afterCommit, close
-
-
-
-
Method Detail
-
initialize
public void initialize(DataCacheManager mgr)
Description copied from interface:DataCache
Initialize any resources associated with the givenDataCacheManager
.- Specified by:
initialize
in interfaceDataCache
- Overrides:
initialize
in classConcurrentDataCache
-
setPartitionType
public void setPartitionType(java.lang.String type) throws java.lang.Exception
Sets the type of the partitions. Each partition is a DataCache itself.- Parameters:
type
- the name of the type that implements DataCache interface. Aliases such as"concurrent"
is also recognized.- Throws:
java.lang.Exception
- if the given type is not resolvable to a loadable type.
-
setPartitions
public void setPartitions(java.lang.String parts)
Set partitions from a String configuration.- Parameters:
parts
- a String of the form(p1, p2, p3)
where p1, p2 etc. itself are plug-in strings for individual Data Cache configuration.
-
getPartitions
public java.util.List<java.lang.String> getPartitions()
Returns the individual partition configuration properties.
-
getPartition
public DataCache getPartition(java.lang.String name, boolean create)
Description copied from interface:DataCache
Gets the named partition. Note that a partition itself is another cache.- Specified by:
getPartition
in interfaceDataCache
- Overrides:
getPartition
in classAbstractDataCache
- Parameters:
name
- name of the given partition.create
- if true optionally create a new partition.- Returns:
- a partition of the given name. Or null, if either no such partition exists or can not be created.
-
getPartitionNames
public java.util.Set<java.lang.String> getPartitionNames()
Gets the name of the configured partitions.- Specified by:
getPartitionNames
in interfaceDataCache
- Overrides:
getPartitionNames
in classAbstractDataCache
- Returns:
- empty set if no partition exists.
-
isPartitioned
public final boolean isPartitioned()
Always returns true.- Specified by:
isPartitioned
in interfaceDataCache
- Overrides:
isPartitioned
in classAbstractDataCache
-
endConfiguration
public void endConfiguration()
Description copied from interface:Configurable
Invoked upon completion of bean property configuration for this object.- Specified by:
endConfiguration
in interfaceConfigurable
- Overrides:
endConfiguration
in classAbstractDataCache
-
-