⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmcache.java

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 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 + -