clientcachemanager.java

来自「单点登陆」· Java 代码 · 共 107 行

JAVA
107
字号
package net.s3o.client.cache;

import java.util.Map;

import net.s3o.common.UserInfoWrapper;
import net.s3o.core.cache.S3OEhCacheFactory;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;

public class ClientCacheManager implements InitializingBean,DisposableBean {

	private S3OEhCacheFactory cacheFactory=null;
	public static Cache usersCacheByUserId = null;
	
	
	public static long timeToIdle = 1000;

	public static long timeToLive = 1000;

	
	public void afterPropertiesSet() throws Exception {
		
		Assert.notNull(cacheFactory,"属性 cacheFactory 没有指定.");
		usersCacheByUserId=cacheFactory.getCacheByName("usersCacheByUserId");
		
		
		timeToIdle=usersCacheByUserId.getTimeToIdleSeconds();
		timeToLive=usersCacheByUserId.getTimeToLiveSeconds();

		
	}
	
	

	public static boolean hasLogout(String userId){
		return userId==null||getUserInfoByUserId(userId)==null;
	}
	

	
	

	
	public S3OEhCacheFactory getCacheFactory() {
		return cacheFactory;
	}

	public void setCacheFactory(S3OEhCacheFactory cacheFactory) {
		this.cacheFactory = cacheFactory;
	}

	
	
	public static Map getUserInfoByUserId(String userId){
		Element elem=usersCacheByUserId.get(userId);
		if (elem!=null) {
			return (Map)elem.getObjectValue();
		}
		return null;
	}
	
	public static void setUserInfo(Map userInfoMap){
		
		removeUserInfoByUserId((String)userInfoMap.get(UserInfoWrapper.KEY_OF_USER_ID));
		setUserInfoByUserId(userInfoMap);
		
	}
	

	
	public static boolean removeUserInfoByUserId(String userId){
		return usersCacheByUserId.remove(userId);
	}
	
	
	/* ==================================== */

	protected static void setUserInfoByUserId(Map userInfoMap){
		String userid=(String)userInfoMap.get(UserInfoWrapper.KEY_OF_USER_ID);
		usersCacheByUserId.put(new Element(userid,userInfoMap));
	}
	

	protected static void clearUsersCacheByUserId(){
		usersCacheByUserId.removeAll();
	}

	



	public void destroy() {
		

		usersCacheByUserId = null;
		
		timeToIdle=1000;
		timeToLive=1000;
		
		cacheFactory.destroy();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?