package org.infinispan.demos.gridfs;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.infinispan.manager.CacheContainer;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
/**
* A bootstrapping startup listener which creates and holds a cache instance
*/
public class CacheManagerHolder implements ServletContextListener {
private static final Log log = LogFactory.getLog(CacheManagerHolder.class);
private static final String CFG_PROPERTY = "infinispan.config";
private static final String DATA_CACHE_NAME_PROPERTY = "infinispan.gridfs.cache.data";
private static final String METADATA_CACHE_NAME_PROPERTY = "infinispan.gridfs.cache.metadata";
public static CacheContainer cacheContainer;
public static String dataCacheName, metadataCacheName;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext();
String cfgFile = servletContext.getInitParameter(CFG_PROPERTY);
if (cfgFile == null)
cacheContainer = new DefaultCacheManager();
else {
try {
cacheContainer = new DefaultCacheManager(cfgFile);
} catch (IOException e) {
log.error("Unable to start cache manager with config file " + cfgFile + ". Using DEFAULTS!");
cacheContainer = new DefaultCacheManager();
}
}
dataCacheName = servletContext.getInitParameter(DATA_CACHE_NAME_PROPERTY);
metadataCacheName = servletContext.getInitParameter(METADATA_CACHE_NAME_PROPERTY);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
if(cacheContainer != null){
cacheContainer.stop();
}
}
}