Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

infinispan项目中的配置

来源: 未知 分享至:

定义缓存策略

infinispan-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<infinispan
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:infinispan:config:4.2 http://www.infinispan.org/schemas/infinispan-config-4.2.xsd"
      xmlns="urn:infinispan:config:4.2">
	<namedCache name="xml-configured-cache">
		<eviction strategy="LRU" maxEntries="200" />
		<!-- lifespan:存活时间. maxIdle:最大空闲时间 -->
		<expiration lifespan="300000" maxIdle="120000" />
	</namedCache>
</infinispan>

定义缓存模型

package org.snailteam.cache;

import java.util.Map;

public interface CacheManager {
	void evict(Object key);

	Object put(Object key, Object value);

	Object putIfAbsent(Object key, Object value);

	void putAll(Map<Object, Object> map);

	boolean replace(Object key, Object oldValue, Object value);

	Object get(Object key);

}

定义缓存模型的实现

package org.sanilteam.cache;

import java.util.Map;

import org.infinispan.Cache;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class InfinispanCacheManager implements CacheManager {
	private Logger logger = LoggerFactory.getLogger(InfinispanCacheManager.class);

	private EmbeddedCacheManager embeddedCacheManager;
	private Cache<Object, Object> cache;
	
	private String configurationFile;
	

	public String getConfigurationFile() {
		return configurationFile;
	}

	public void setConfigurationFile(String configurationFile) {
		this.configurationFile = configurationFile;
	}

	public void setEmbeddedCacheManager(EmbeddedCacheManager embeddedCacheManager) {
		this.embeddedCacheManager = embeddedCacheManager;
	}

	public InfinispanCacheManager() {
		// only used for junit test
	}

	public void init() throws Exception{
		if (cache == null) {
			embeddedCacheManager = new DefaultCacheManager(configurationFile);
			cache = embeddedCacheManager.getCache("xml-configured-cache");
			logger.info(cache.getConfiguration().getCacheModeString());
		}
	}
	
	public void destroy(){
		if(cache!=null){
			cache.stop();
			embeddedCacheManager.stop();
		}
	}
	

	public  Cache<Object, Object> getCache() {
		return cache;
	}

	@Override
	public void evict(Object key) {
		getCache().evict(key);
	}

	@Override
	public Object put(Object key, Object value) {
		return getCache().put(key, value);
	}

	@Override
	public Object putIfAbsent(Object key, Object value) {
		return getCache().putIfAbsent(key, value);
	}

	@Override
	public void putAll(Map<Object, Object> map) {
		getCache().putAll(map);
	}

	@Override
	public boolean replace(Object key, Object oldValue, Object newValue) {
		return getCache().replace(key, oldValue, newValue);
	}

	@Override
	public Object get(Object key) {
		return getCache().get(key);
	}
}

spring管理缓存

<bean class="org.sanilteam.cache.InfinispanCacheManager"
		id="cacheManager" init-method="init" destroy-method="destroy">
		<property name="configurationFile" value="META-INF/infinispan-config.xml" />
	</bean>

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史