博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java web框架源码_轻量级java web实践-7(框架源码-5)
阅读量:5323 次
发布时间:2019-06-14

本文共 4280 字,大约阅读时间需要 14 分钟。

缓存部分源码

抽象接口

public interface Cache

{

public Object get(Object key) throws CacheException;

public void put(Object key, Object value) throws CacheException;

public void update(Object key, Object value) throws CacheException;

public List keys() throws CacheException ;

public void remove(Object key) throws CacheException;

public void clear() throws CacheException;

public void destroy() throws CacheException;

}

public interface CacheProvider

{

public Cache buildCache(String regionName, boolean autoCreate) throws CacheException;

public void start() throws CacheException;

public void stop();

}

Ehcache支持

public class EhCache implements Cache

{

private net.sf.ehcache.Cache cache;

public EhCache(net.sf.ehcache.Cache cache)

{

this.cache = cache;

}

@Override

public Object get(Object key) throws CacheException

{

try

{

if (key == null)

return null;

else

{

Element element = cache.get(key);

if (element != null)

return element.getObjectValue();

}

return null;

}

catch (net.sf.ehcache.CacheException e)

{

throw new CacheException(e);

}

}

@Override

public void put(Object key, Object value) throws CacheException

{

try

{

Element element = new Element(key, value);

cache.put(element);

}

catch (IllegalArgumentException e)

{

throw new CacheException(e);

}

catch (IllegalStateException e)

{

throw new CacheException(e);

}

catch (net.sf.ehcache.CacheException e)

{

throw new CacheException(e);

}

}

@Override

public void update(Object key, Object value) throws CacheException

{

put(key, value);

}

@Override

@SuppressWarnings("unchecked")

public List keys() throws CacheException

{

return this.cache.getKeys();

}

@Override

public void remove(Object key) throws CacheException

{

try

{

cache.remove(key);

}

catch (IllegalStateException e)

{

throw new CacheException(e);

}

catch (net.sf.ehcache.CacheException e)

{

throw new CacheException(e);

}

}

@Override

public void clear() throws CacheException

{

try

{

cache.removeAll();

}

catch (IllegalStateException e)

{

throw new CacheException(e);

}

catch (net.sf.ehcache.CacheException e)

{

throw new CacheException(e);

}

}

@Override

public void destroy() throws CacheException

{

try

{

cache.getCacheManager().removeCache(cache.getName());

}

catch (IllegalStateException e)

{

throw new CacheException(e);

}

catch (net.sf.ehcache.CacheException e)

{

throw new CacheException(e);

}

}

}

public class CacheManager

{

private final static Logger log = LoggerFactory.getLogger(CacheManager.class);

private static CacheProvider provider;

static

{

initCacheProvider("org.express.portal.cache.EhCacheProvider");

}

private static void initCacheProvider(String prv_name)

{

try

{

CacheManager.provider = (CacheProvider) Class.forName(prv_name).newInstance();

CacheManager.provider.start();

log.info("Using CacheProvider : " + provider.getClass().getName());

}

catch (Exception e)

{

log.error("Unabled to initialize cache provider:" + prv_name + ", using ehcache default.", e);

CacheManager.provider = new EhCacheProvider();

}

}

private final static Cache _getCache(String cache_name, boolean autoCreate)

{

if (provider == null)

{

provider = new EhCacheProvider();

}

return provider.buildCache(cache_name, autoCreate);

}

/**

* 获取缓存中的数据

*

* @param name

* @param key

* @return

*/

public final static Object get(String name, Serializable key)

{

if (name != null && key != null)

return _getCache(name, true).get(key);

return null;

}

/**

* 获取缓存中的数据

*

* @param 

* @param resultClass

* @param name

* @param key

* @return

*/

@SuppressWarnings("unchecked")

public final static  T get(Class resultClass, String name, Serializable key)

{

if (name != null && key != null)

return (T) _getCache(name, true).get(key);

return null;

}

/**

* 写入缓存

*

* @param name

* @param key

* @param value

*/

public final static void set(String name, Serializable key, Serializable value)

{

if (name != null && key != null && value != null)

_getCache(name, true).put(key, value);

}

/**

* 清除缓冲中的某个数据

*

* @param name

* @param key

*/

public final static void evict(String name, Serializable key)

{

if (name != null && key != null)

_getCache(name, true).remove(key);

}

/**

* 清除缓冲中的某个数据

*

* @param name

* @param key

*/

public final static void justEvict(String name, Serializable key)

{

if (name != null && key != null)

{

Cache cache = _getCache(name, false);

if (cache != null)

cache.remove(key);

}

}

}

转载地址:http://iphhv.baihongyu.com/

你可能感兴趣的文章
一步步教你轻松学奇异值分解SVD降维算法
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
php中的isset和empty的用法区别
查看>>
把word文档中的所有图片导出
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
正则表达式
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
加固linux
查看>>
10.17动手动脑
查看>>
WPF中Image显示本地图片
查看>>