public class CacheManager extends BasicDBListenerStoreListener implements javax.servlet.http.HttpSessionBindingListener, JcmsConstants, java.io.Serializable
Cache entries can be invalidated either manually (see clearContent() method), or when a timeout is reached or when a mutation occurs on a set of (Storable) classes.
Modifier and Type | Class and Description |
---|---|
class |
CacheManager.CacheEntry |
protected class |
CacheManager.ServerCacheLRU
Helper class used to store the LRU collection of server's caches.
|
Modifier and Type | Field and Description |
---|---|
protected Channel |
channel |
protected java.util.Map<java.lang.Class<?>,java.util.HashSet<java.lang.String>> |
classMap |
protected java.util.Map<java.lang.String,CacheManager.CacheEntry> |
contentMap |
protected java.util.Map<java.lang.String,CacheManager.ServerCacheLRU> |
customServerCacheLRUMap
LRU of the default configuration.
|
protected CacheManager.ServerCacheLRU |
defaultServerCacheLRU
LRU of the default configuration
|
protected boolean |
isDisabled |
static java.lang.String |
REVISION |
ADATE_SEARCH, ADMIN_NOTES_PROP, ADVANCED_TAB, ARCHIVES_DIR, ASCII_WIDTH, CATEGORY_TAB, CDATE_SEARCH, COMMON_ALARM, CONTENT_TAB, COOKIE_MAX_AGE, CTRL_TOPIC_INTERNAL, CTRL_TOPIC_REF, CTRL_TOPIC_VALUE, CTRL_TOPIC_WRITE, CUSTOM_PROP, DOCCHOOSER_HEIGHT, DOCCHOOSER_WIDTH, DOCS_DIR, EDATE_SEARCH, EMAIL_REGEXP, ERROR_MSG, FORBIDDEN_FILE_ACCESS, FORBIDDEN_REDIRECT, FORCE_REDIRECT, ICON_ARCHIVE, ICON_LOCK, ICON_LOCK_STRONG, ICON_WARN, ICON_WH_BOOK_CLOSED, ICON_WH_BOOK_OPEN, INFORMATION_MSG, JALIOS_JUNIT_PROP, JCMS_CADDY, JCMS_MSG_LIST, JSYNC_DOWNLOAD_DIR, JSYNC_SYNC_ALARM, LOG_FILE, LOG_TOPIC_SECURITY, LOGGER_PROP, LOGGER_XMLPROP, MBR_PHOTO_DIR, MDATE_SEARCH, MONITOR_XML, OP_CREATE, OP_CREATE_STR, OP_DEEP_COPY, OP_DEEP_COPY_STR, OP_DEEP_DELETE, OP_DEEP_DELETE_STR, OP_DELETE, OP_DELETE_STR, OP_MERGE, OP_MERGE_STR, OP_UPDATE, OP_UPDATE_STR, PDATE_SEARCH, PHOTO_DIR, PHOTO_ICON, PHOTO_ICON_HEIGHT, PHOTO_ICON_WIDTH, PHOTO_LARGE, PHOTO_LARGE_HEIGHT, PHOTO_LARGE_WIDTH, PHOTO_NORMAL, PHOTO_NORMAL_HEIGHT, PHOTO_NORMAL_WIDTH, PHOTO_SMALL, PHOTO_SMALL_HEIGHT, PHOTO_SMALL_WIDTH, PHOTO_TINY, PHOTO_TINY_HEIGHT, PHOTO_TINY_WIDTH, PREVIOUS_TAB, PRINT_VIEW, PRIVATE_FILE_ACCESS, PUBLIC_FILE_ACCESS, READ_RIGHT_TAB, SDATE_SEARCH, SEARCHENGINE_ALARM, SESSION_AUTHORIZED_FILENAMES_SET, STATS_REPORT_DIR, STATUS_PROP, STORE_XML, TEMPLATE_TAB, THUMBNAIL_LARGE_HEIGHT, THUMBNAIL_LARGE_WIDTH, THUMBNAIL_SMALL_HEIGHT, THUMBNAIL_SMALL_WIDTH, TYPES_ICON_ALT_PROP, TYPES_ICON_SUFFIX_PROP, TYPES_ICON_TITLE_PROP, TYPES_PREFIX_PROP, TYPES_THUMB_SUFFIX_PROP, UDATE_SEARCH, UPDATE_RIGHT_TAB, UPLOAD_DIR, URL_REGEXP, WARNING_MSG, WEBAPP_PROP, WFEXPRESS_ALARM, WFREMINDER_ALARM, WORKFLOW_TAB, WORKFLOW_XML
CRLF, MILLIS_IN_ONE_DAY, MILLIS_IN_ONE_HOUR, MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MONTH, MILLIS_IN_ONE_SECOND, MILLIS_IN_ONE_WEEK, MILLIS_IN_ONE_YEAR
ALL_CATEGORIES_SET_FIELD, AUTH_GRP_SET_FIELD, AUTH_MBR_SET_FIELD, AUTHOR_ID_FIELD, CATEGORIES_SET_FIELD, CDATE_FIELD, CHANNEL_JCMSDB_PROP, DBDATA_URID, HAS_NO_READ_RIGHTS, HIBERNATE_MAPPING_ADATE, HIBERNATE_MAPPING_AUTHOR, HIBERNATE_MAPPING_CDATE, HIBERNATE_MAPPING_EDATE, HIBERNATE_MAPPING_HASNOREADRIGHTS, HIBERNATE_MAPPING_MAJORVERSION, HIBERNATE_MAPPING_MDATE, HIBERNATE_MAPPING_MINORVERSION, HIBERNATE_MAPPING_PDATE, HIBERNATE_MAPPING_PSTATUS, HIBERNATE_MAPPING_READERCOUNT, HIBERNATE_MAPPING_ROLEMAPSTR, HIBERNATE_MAPPING_TITLE, HIBERNATE_MAPPING_TRACKED, HIBERNATE_MAPPING_UDATE, HIBERNATE_MAPPING_VOTECOUNT, HIBERNATE_MAPPING_VOTESCORE, HIBERNATE_MAPPING_WORKFLOW_ID, HIBERNATE_MAPPING_WORKSPACE_ID, MAX_HIBERNATE_MAPPING_PUBLICATION, MDATE_FIELD, PSTATUS_FIELD, ROW_ID_FIELD, SCROLL_FETCH_SIZE, WORKFLOW_ID_FIELD, WORKSPACE_ID_FIELD
Modifier | Constructor and Description |
---|---|
|
CacheManager()
Constructs a new CacheManager
|
protected |
CacheManager(boolean failsafeMode) |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
addEntry(java.lang.String contentId,
javax.servlet.http.HttpSession session,
boolean sessionScope,
java.lang.String content,
java.lang.Class<?>[] classes,
long timeout,
java.util.Map<?,?> extraInfoMap,
java.lang.String serverCacheConfig)
Add a new cache entry
|
java.lang.String |
buildEntryId(java.lang.String contentId,
java.lang.String sessionId,
java.lang.String serverCacheConfiguration)
Build the entry id given the content's id and the associated session id.
|
java.util.Collection<CacheManager.CacheEntry> |
getCacheEntries()
Get all the cache entries.
|
CacheManager.CacheEntry |
getCacheEntry(java.lang.String id)
Get the CacheEntry from a given entry's id.
|
static CacheManager |
getFailSafeModeInstance() |
int |
getMaxServersCacheNbr() |
protected java.util.Map<java.lang.String,java.lang.String> |
getServerCacheIdMap(java.lang.String id)
Retrieve the server Cache Map to use for the specified cache id
|
int |
getSize()
Get the size of the cache (ie the count of cache entries).
|
void |
handleCommitUpdate(Storable storable,
Storable oldStorable,
boolean firstTime)
This method gets called when after a storable has been updated.
|
void |
handleCreate(Storable storable,
boolean firstTime)
This method gets called when a storable is created.
|
void |
handleDelete(Storable storable,
boolean firstTime)
This method gets called when a storable is deleted.
|
void |
invalidateClass(java.lang.Class<?> clazz)
Invalidate the content of all entries bound to the given class
|
boolean |
isCached(java.lang.String id)
Check if their is a cache entry associated with the given id.
|
boolean |
isDisabled() |
void |
onPostDelete(DBData data,
org.hibernate.event.PostDeleteEvent event,
boolean firstTime) |
void |
onPostInsert(DBData data,
org.hibernate.event.PostInsertEvent event,
boolean firstTime) |
void |
onPostUpdate(DBData data,
org.hibernate.event.PostUpdateEvent event,
boolean firstTime) |
void |
reinitialize()
Reinitialize the CacheManager.
|
void |
removeAllEntries()
Clear all the cache entries.
|
void |
removeAllSessionEntries()
Clear all the session cache entries.
|
void |
removeEntry(java.lang.String id)
Remove a cache entry referenced with is id.
|
void |
removeSessionEntries(javax.servlet.http.HttpSession session)
Clear all the session cache entries for a given session
|
void |
valueBound(javax.servlet.http.HttpSessionBindingEvent event) |
void |
valueUnbound(javax.servlet.http.HttpSessionBindingEvent event) |
handlePrepareUpdate
getAdateFromState, getAuthorIdFromState, getCdateFromState, getDateFromState, getEdateFromState, getMdateFromState, getPdateFromState, getPrePstatus, getPrePstatus, getPstatusFromState, hasNoChange, hasNoChange, init, onPreUpdate
public static final java.lang.String REVISION
protected transient boolean isDisabled
protected transient Channel channel
protected final transient java.util.Map<java.lang.String,CacheManager.CacheEntry> contentMap
protected final transient java.util.Map<java.lang.Class<?>,java.util.HashSet<java.lang.String>> classMap
protected transient CacheManager.ServerCacheLRU defaultServerCacheLRU
protected transient java.util.Map<java.lang.String,CacheManager.ServerCacheLRU> customServerCacheLRUMap
public CacheManager()
protected CacheManager(boolean failsafeMode)
public static CacheManager getFailSafeModeInstance()
public void reinitialize()
public boolean isDisabled()
public int getMaxServersCacheNbr()
protected java.util.Map<java.lang.String,java.lang.String> getServerCacheIdMap(java.lang.String id)
id
- must not be nullpublic java.lang.String buildEntryId(java.lang.String contentId, java.lang.String sessionId, java.lang.String serverCacheConfiguration)
contentId
- the content idsessionId
- the http session id, exclusive with serverCacheConfigurationserverCacheConfiguration
- the custom configuration to use for server configuration, exclusive with sessionIdpublic java.lang.String addEntry(java.lang.String contentId, javax.servlet.http.HttpSession session, boolean sessionScope, java.lang.String content, java.lang.Class<?>[] classes, long timeout, java.util.Map<?,?> extraInfoMap, java.lang.String serverCacheConfig)
contentId
- the id of contentsession
- the sessionsessionScope
- should the cache entry be stored for this sessioncontent
- the content to be cachedclasses
- an array of classes to listen. Each time a
mutation occurs on a (visible) instance of the classes
the content of the cache is cleared.timeout
- the timeout of this entry (in minutes)extraInfoMap
- any contextual data to the cache being createdserverCacheConfig
- an optionnal custom server cache configuration to use (use only when sessionScope = false)public boolean isCached(java.lang.String id)
id
- the CacheEntry's idpublic int getSize()
public java.util.Collection<CacheManager.CacheEntry> getCacheEntries()
public CacheManager.CacheEntry getCacheEntry(java.lang.String id)
id
- the entry's idpublic void removeEntry(java.lang.String id)
id
- the entry's idpublic void removeAllEntries()
public void removeAllSessionEntries()
public void removeSessionEntries(javax.servlet.http.HttpSession session)
session
- the sessionpublic void invalidateClass(java.lang.Class<?> clazz)
clazz
- the class for which the entries must be clearedpublic void handleCreate(Storable storable, boolean firstTime)
StoreListener
handleCreate
in interface StoreListener
handleCreate
in class BasicDBListenerStoreListener
storable
- the storablefirstTime
- true if it is the first time this operation is processedStoreListener.handleCreate(Storable, boolean)
public void handleCommitUpdate(Storable storable, Storable oldStorable, boolean firstTime)
StoreListener
handleCommitUpdate
in interface StoreListener
handleCommitUpdate
in class BasicDBListenerStoreListener
storable
- the storable, this instance is the object that was created
at first and that will be stored in jcms until deletion of the storable
with this ID.
You should always manipulate this object if you maintain any index.oldStorable
- the previous version of the storable, it is a clone, do not use
in any index, it should only be used to access old values.firstTime
- true if it is the first time this operation is processedStoreListener.handleCommitUpdate(Storable, Storable, boolean)
public void handleDelete(Storable storable, boolean firstTime)
StoreListener
handleDelete
in interface StoreListener
handleDelete
in class BasicDBListenerStoreListener
storable
- the storablefirstTime
- true if it is the first time this operation is processedStoreListener.handleDelete(Storable, boolean)
public void onPostInsert(DBData data, org.hibernate.event.PostInsertEvent event, boolean firstTime)
onPostInsert
in interface DBListener
onPostInsert
in class BasicDBListener
DBListener.onPostInsert(DBData, PostInsertEvent, boolean)
public void onPostUpdate(DBData data, org.hibernate.event.PostUpdateEvent event, boolean firstTime)
onPostUpdate
in interface DBListener
onPostUpdate
in class BasicDBListener
DBListener.onPostUpdate(DBData, PostUpdateEvent, boolean)
public void onPostDelete(DBData data, org.hibernate.event.PostDeleteEvent event, boolean firstTime)
onPostDelete
in interface DBListener
onPostDelete
in class BasicDBListener
DBListener.onPostDelete(DBData, PostDeleteEvent, boolean)
public void valueBound(javax.servlet.http.HttpSessionBindingEvent event)
valueBound
in interface javax.servlet.http.HttpSessionBindingListener
public void valueUnbound(javax.servlet.http.HttpSessionBindingEvent event)
valueUnbound
in interface javax.servlet.http.HttpSessionBindingListener
Copyright © 2001-2010 Jalios SA. All Rights Reserved.