通过net.sf.ehcache.CacheManager加载工程项目下的ehcacheConfig.xml文件生成CacheManager实例。public static final CacheManager CACHE_MANAGER =
CacheManager.create("/ehcacheConfig.xml");
在 CacheManager 容器内追加自定义的ehcache对象;
Ehcache ehcache = null;
if(!CACHE_MANAGER.cacheExists(ehcacheName)){
ehcache = new Cache(ehcacheName, 5000, false, false, 7200, 7200);
CACHE_MANAGER.addCache(ehcache);
}///getTimeToLiveSeconds
ehcache = CACHE_MANAGER.getCache(ehcacheName);
//ehcache的数据结构是key\Element 键值对结构;
StringBuilder sb = new StringBuilder("");
sb.append("access_ewechat_");
sb.append(agentId);
String key = sb.toString();
Element element = ehcache.get(key);
if(null != element){//判断key值对应的element是否存在;
long expire = element.getExpirationTime();//缓存在ehcache中的key值期满时刻点 单位是毫秒;
long subtract = expire - now;
logger.debug("wechat access Token=>{} 存活剩余时间: {}秒!",agentId,subtract/1000);
return element.getValue().toString();
}
//key值对应的element不存在则调用远程restful web service,取到JSONObject解析出access_token值;
String url = String.format(tokenURL,prefixURL,corpID,secretApp);
JSONObject result = JSONObject.fromObject(doRequest(new HttpGet(url)));
if(null == result) return null;
String token = result.getString("access_token");
///Element e = new Element(key,token);
ehcache.put(new Element(key,token));//保存access_token值到ehcache中;
return token;
Ehcache project => Greg Luck 2003年开发=>2009年Terracotta.co购买。