/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.cachepool;
import com.jinhe.tss.core.cachepool.container.ContainerFactory;
import com.jinhe.tss.core.cachepool.container.IPoolContainer;
import com.jinhe.tss.core.exception.BusinessException;
import com.jinhe.tss.core.util.BeanUtil;
/**
* <p> SimplePool.java </p>
* 简单的缓存对象池,适合简单的缓存需求。
*
* @author Jon.King 2007-1-3
*/
public class SimplePool extends AbstractPool {
private IPoolContainer poolContainer; // 对象池容器
public SimplePool(){
}
public final void init() {
final Class<?> collectionType = BeanUtil.createClassByName(getCacheStrategy().getPoolCollectionClass());
if (!IPoolContainer.class.isAssignableFrom(collectionType)) {
throw new BusinessException("指定的池集合类类型非法: " + collectionType.getName() + " (必须实现cachepool.container.IPoolContainer接口)");
}
final ContainerFactory factory = ContainerFactory.getInstance();
poolContainer = factory.create(collectionType.getName(), getCacheStrategy().getCode());
log.info("缓存池(" + strategy.getName() + ")初始化成功!");
}
public void release(final boolean forced) {
if (released) return;
poolContainer.clear();
released = true;
}
public IPoolContainer getFree() { return poolContainer; }
public IPoolContainer getUsing() { return poolContainer; }
public synchronized int getSize() { return poolContainer.size(); }
}