Fixed issue with hot redeploy as cache not being closed.

This commit is contained in:
Ben Alex 2004-05-24 00:04:49 +00:00
parent a51506d0d5
commit b6e0c3076f
1 changed files with 30 additions and 8 deletions

View File

@ -23,6 +23,10 @@ import net.sf.ehcache.CacheException;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.dao.DataRetrievalFailureException;
@ -35,7 +39,12 @@ import org.springframework.dao.DataRetrievalFailureException;
* @version $Id$
*/
public class EhCacheBasedTicketCache implements StatelessTicketCache,
InitializingBean {
InitializingBean, DisposableBean {
//~ Static fields/initializers =============================================
private static final Log logger = LogFactory.getLog(EhCacheBasedTicketCache.class);
private static final String CACHE_NAME = "ehCacheBasedTicketCache";
//~ Instance fields ========================================================
private Cache cache;
@ -54,13 +63,14 @@ public class EhCacheBasedTicketCache implements StatelessTicketCache,
+ cacheException.getMessage());
}
if (element == null) {
System.out.println("not found");
if (logger.isDebugEnabled()) {
logger.debug("Cache hit: " + (element != null)
+ "; service ticket: " + serviceTicket);
}
if (element == null) {
return null;
} else {
System.out.println("found");
return (CasAuthenticationToken) element.getValue();
}
}
@ -87,18 +97,30 @@ public class EhCacheBasedTicketCache implements StatelessTicketCache,
manager = CacheManager.create();
// Cache name, max memory, overflowToDisk, eternal, timeToLive, timeToIdle
cache = new Cache("ehCacheBasedTicketCache", Integer.MAX_VALUE, false,
false, minutesToIdle * 60, minutesToIdle * 60);
cache = new Cache(CACHE_NAME, Integer.MAX_VALUE, false, false,
minutesToIdle * 60, minutesToIdle * 60);
manager.addCache(cache);
}
public void destroy() throws Exception {
manager.removeCache(CACHE_NAME);
}
public void putTicketInCache(CasAuthenticationToken token) {
Element element = new Element(token.getCredentials().toString(), token);
System.out.println("Adding " + element.getKey());
if (logger.isDebugEnabled()) {
logger.debug("Cache put: " + element.getKey());
}
cache.put(element);
}
public void removeTicketFromCache(CasAuthenticationToken token) {
if (logger.isDebugEnabled()) {
logger.debug("Cache remove: " + token.getCredentials().toString());
}
this.removeTicketFromCache(token.getCredentials().toString());
}