📄 rmcache.java
字号:
package cn.js.fan.cache.jcs;
import cn.js.fan.cache.jcs.ICache;
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
import org.apache.log4j.Logger;
import java.util.Iterator;
import java.util.Vector;
import java.io.Serializable;
import cn.js.fan.web.Global;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class RMCache implements ICache {
private static JCS cache;
private static RMCache instance;
boolean canCache = true;
private static Object initLock = new Object();
String cacheName = "RMCache";
transient Logger logger;
Vector cacheMgrs = new Vector();
public RMCache() {
logger = Logger.getLogger(RMCache.class.getName()); ;
canCache = Global.useCache;
if (canCache) {
try {
if (cache == null) {
cache = JCS.getInstance(cacheName);
}
} catch (CacheException e) {
logger.error(e.getMessage());
}
}
}
public static RMCache getInstance() {
if (instance == null) {
synchronized(initLock) {
if (instance == null)
instance = new RMCache();
}
}
return instance;
}
public Object get(Object name) {
if (!canCache)
return null;
Object obj = cache.get(name);
//logger.info("RMCache get: " + name + " = " + obj);
return obj;
}
public void put(Object name, Object obj) throws CacheException {
if (!canCache)
return;
cache.put(name, obj);
}
public void remove(Object name) throws CacheException {
cache.remove(name);
}
public void putInGroup(Object name, String groupName, Object value) throws CacheException {
if (!canCache)
return;
cache.putInGroup(name, groupName, value);
}
public void remove(Object name, String groupName) throws CacheException {
cache.remove(name, groupName);
}
public void invalidateGroup(String groupName) throws CacheException {
cache.invalidateGroup(groupName);
// 20060414发现invalidateGroup有时不对清空所有的key,导致在listtopic.jsp时因缓存未刷新,新发的贴子出不来,因此在这里再检查一下,手工删除
java.util.Set set = cache.getGroupKeys(groupName);
Iterator ir = set.iterator();
while (ir.hasNext()) {
String key = (String) ir.next();
remove(key, groupName);
}
}
public Object getFromGroup(Object name, String group) throws CacheException {
if (!canCache)
return null;
Object obj = cache.getFromGroup(name, group);
//logger.info("getFromGroup: " + obj);
return obj;
}
public void setCanCache(boolean b) {
this.canCache = b;
}
public boolean getCanCache() {
return this.canCache;
}
public void clear() throws CacheException {
cache.clear();
}
/**
* refresh CacheMgr already registed
*/
public void timer() {
Iterator ir = cacheMgrs.iterator();
while (ir.hasNext()) {
ICacheMgr icm = (ICacheMgr) ir.next();
icm.timer();
}
}
public synchronized void regist(ICacheMgr icm) {
cacheMgrs.addElement(icm);
}
public Vector getCacheMgrs() {
return cacheMgrs;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -