Opensymphony(http://www.opensymphony.com)是一個很好提供開源項目的組織。同Jakarta相比,這裡的組件(Component)更多的是精致小巧的設計,它們尤以簡單易用和可插拔的靈活性見長。
Java代碼
/** Cache.Java */
public interface Cache {
Object get(Object key) throws CacheException;
void put(Object key, Object value) throws CacheException;
void remove(Object key) throws CacheException;
void clear() throws CacheException;
void destroy() throws CacheException;}
/** OSCache.Java */
public class OSCache implements Cache {
private GeneralCacheAdministrator cache = null;
public OSCache(PropertIEs prop) {
cache = new GeneralCacheAdministrator(prop);
}
public void setCacheCapacity(int cacheCapacity) {
cache.setCacheCapacity(cacheCapacity);
}
public Object get(Object key) throws CacheException {
try {
return cache.getFromCache(String.valueOf(key));
} catch (NeedsRefreshException e) {
cache.cancelUpdate(String.valueOf(key));
return null;
}
}
public void put(Object key, Object value) throws CacheException {
cache.putInCache(String.valueOf(key), value);
}
public void remove(Object key) throws CacheException {
cache.flushEntry(String.valueOf(key));
}
public void clear() throws CacheException {
cache.flushAll();
}
public void destroy() throws CacheException {
cache.destroy();
}
}
/** CacheManager.Java */
public class CacheManager { //$SUP-USP$
private static Map cacheMap = new HashMap();
private static Config config = ConfigManager.getConfig();
private CacheManager() {
}
public static Cache getCache(Class clazz) {
return getCache(clazz.getName());
}
public static Cache getCache(String cacheId) {
Cache cache = null;
cache = (Cache) cacheMap.get(cacheId);
if (cache == null) {
cache = new OSCache(config.getPropertIEs());
cacheMap.put(cacheId, cache);
}
return cache;
}
}
OSCache:J2EE Caching機制。它主要用於JSP Caching、Request Caching、General-Purpose Cache三個方面。在JSP Caching、Request Caching方面,OSCache能夠解決動態網站的基本問題:緩存動態內容、緩存二進制內容、錯誤包容。在General-Purpose Cache方面,在Java應用中通過調用OSCache的API來緩存任意的Java對象,hibernate 2.0開始對其也有支持。
OSCache標記庫是一種開創性的JSP定制標記應用,提供了在現有JSP頁面之內實現快速內存緩沖的功能。雖然已經有一些供應商在提供各種形式的緩存產品,但是,它們都屬於面向特定供應商的產品。OSCache能夠在任何JSP 1.2兼容的服務器上運行,它不僅能夠為所有用戶緩沖現有JSP代碼塊,而且能夠以用戶為單位進行緩沖。OSCache還包含一些提高可伸縮性的高級特性,比如:緩沖到磁盤,可編程的緩沖刷新,異常控制,等等。