use of com.sun.appserv.web.cache.CacheManager in project Payara by payara.
the class CacheModule method configureResponseCache.
/**
* configure ias-web response cache
* @param app WebModule containing the cache
* @param bean ias-web app config bean
* @throws Exception
*
* read the configuration and setup the runtime support for caching in a
* application.
*/
public static CacheManager configureResponseCache(WebModule app, SunWebApp bean) throws Exception {
Cache cacheConfig = ((SunWebAppImpl) bean).getCache();
// is cache configured?
if (cacheConfig == null) {
return null;
}
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, LogFacade.CONFIGURE_CACHE, app.getPath());
}
// create the CacheManager object for this app
CacheManager manager = new CacheManager();
String name, value;
value = cacheConfig.getAttributeValue(Cache.ENABLED);
if (value != null) {
boolean enabled = ConfigBeansUtilities.toBoolean(value);
manager.setEnabled(enabled);
}
// set cache element's attributes and properties
value = cacheConfig.getAttributeValue(Cache.MAX_ENTRIES);
if (value != null) {
try {
int maxEntries = Integer.parseInt(value.trim());
manager.setMaxEntries(maxEntries);
} catch (NumberFormatException e) {
// XXX need error message
throw new Exception("invalid max-entries", e);
}
}
value = cacheConfig.getAttributeValue(Cache.TIMEOUT_IN_SECONDS);
if (value != null) {
try {
int defaultTimeout = Integer.parseInt(value.trim());
manager.setDefaultTimeout(defaultTimeout);
} catch (NumberFormatException e) {
// XXX need error message
throw new Exception("invalid timeout", e);
}
}
WebProperty[] props = cacheConfig.getWebProperty();
for (int i = 0; i < props.length; i++) {
name = props[i].getAttributeValue(WebProperty.NAME);
value = props[i].getAttributeValue(WebProperty.VALUE);
manager.addProperty(name, value);
}
// configure the default cache-helper
DefaultHelper defHelperConfig = cacheConfig.getDefaultHelper();
HashMap<String, String> map = new HashMap<String, String>();
if (defHelperConfig != null) {
props = defHelperConfig.getWebProperty();
for (int i = 0; i < props.length; i++) {
name = props[i].getAttributeValue(WebProperty.NAME);
value = props[i].getAttributeValue(WebProperty.VALUE);
map.put(name, value);
}
}
manager.setDefaultHelperProps(map);
// configure custom cache-helper classes
for (int i = 0; i < cacheConfig.sizeCacheHelper(); i++) {
CacheHelper helperConfig = cacheConfig.getCacheHelper(i);
String helperName = helperConfig.getAttributeValue(CacheHelper.NAME);
HashMap<String, String> helperProps = new HashMap<String, String>();
props = helperConfig.getWebProperty();
for (int j = 0; j < props.length; j++) {
name = props[i].getAttributeValue(WebProperty.NAME);
value = props[i].getAttributeValue(WebProperty.VALUE);
helperProps.put(name, value);
}
helperProps.put("class-name", helperConfig.getAttributeValue(CacheHelper.CLASS_NAME));
manager.addCacheHelperDef(helperName, helperProps);
}
// for each cache-mapping, create CacheMapping, setup the filter
for (int i = 0; i < cacheConfig.sizeCacheMapping(); i++) {
org.glassfish.web.deployment.runtime.CacheMapping mapConfig = cacheConfig.getCacheMapping(i);
CacheMapping mapping = new CacheMapping();
configureCacheMapping(mapConfig, mapping, logger);
// use filter's name to refer to setup the filter
String filterName = CACHING_FILTER_CLASSNAME + i;
/**
* all cache-mapings are indexed by the unique filter-name;
* DefaultCacheHelper uses this name to access the mapping.
*/
manager.addCacheMapping(filterName, mapping);
// setup the ias CachingFilter definition with the context
FilterDef filterDef = new FilterDef();
filterDef.setFilterName(filterName);
filterDef.setFilterClassName(CACHING_FILTER_CLASSNAME);
if (mapping.getServletName() != null) {
filterDef.addInitParameter("servletName", mapping.getServletName());
}
if (mapping.getURLPattern() != null) {
filterDef.addInitParameter("URLPattern", mapping.getURLPattern());
}
app.addFilterDef(filterDef);
// setup the mapping for the specified servlet-name or url-pattern
FilterMap filterMap = new FilterMap();
filterMap.setServletName(mapping.getServletName());
filterMap.setURLPattern(mapping.getURLPattern());
String[] dispatchers = mapConfig.getDispatcher();
if (dispatchers != null) {
EnumSet<DispatcherType> dispatcherTypes = null;
for (String dispatcher : dispatchers) {
// calls to FilterMap.setDispatcher are cumulative
if (dispatcherTypes == null) {
dispatcherTypes = EnumSet.of(Enum.valueOf(DispatcherType.class, dispatcher));
} else {
dispatcherTypes.add(Enum.valueOf(DispatcherType.class, dispatcher));
}
}
filterMap.setDispatcherTypes(dispatcherTypes);
}
filterMap.setFilterName(filterName);
app.addFilterMap(filterMap);
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, LogFacade.CACHING_FILTER_ADDED, new Object[] { mapping.getServletName(), mapping.getURLPattern() });
}
}
manager.setServletContext(app.getServletContext());
return manager;
}
use of com.sun.appserv.web.cache.CacheManager in project Payara by payara.
the class CacheContextListener method contextInitialized.
/**
* This is called when the context is created.
*/
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
// see if a cache manager is already created and set in the context
CacheManager cm = (CacheManager) context.getAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME);
// to create a new cache
if (cm == null)
cm = new CacheManager();
Cache cache = null;
try {
cache = cm.createCache();
} catch (Exception ex) {
}
// set the cache as a context attribute
if (cache != null)
context.setAttribute(Constants.JSPTAG_CACHE_KEY, cache);
}
use of com.sun.appserv.web.cache.CacheManager in project Payara by payara.
the class CacheRequestListener method requestInitialized.
/**
* Receives notification that the request is about to enter the scope
* of the web application, and adds newly created cache for JSP tag
* body invocations as a request attribute.
*
* @param sre the notification event
*/
public void requestInitialized(ServletRequestEvent sre) {
ServletContext context = sre.getServletContext();
// Check if a cache manager has already been created and set in the
// context
CacheManager cm = (CacheManager) context.getAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME);
// to create a new cache
if (cm == null) {
cm = new CacheManager();
}
Cache cache = null;
try {
cache = cm.createCache();
} catch (Exception ex) {
}
// Set the cache as a request attribute
if (cache != null) {
ServletRequest req = sre.getServletRequest();
req.setAttribute(Constants.JSPTAG_CACHE_KEY, cache);
}
}
use of com.sun.appserv.web.cache.CacheManager in project Payara by payara.
the class WebModuleListener method stopCacheManager.
private void stopCacheManager(WebModule webModule) {
ServletContext ctxt = webModule.getServletContext();
CacheManager cm = (CacheManager) ctxt.getAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME);
if (cm != null) {
try {
cm.stop();
if (_logger.isLoggable(Level.FINE)) {
_logger.log(Level.FINE, LogFacade.CACHE_MANAGER_STOPPED);
}
ctxt.removeAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME);
} catch (LifecycleException ee) {
_logger.log(Level.WARNING, ee.getMessage(), ee.getCause());
}
}
}
use of com.sun.appserv.web.cache.CacheManager in project Payara by payara.
the class CacheSessionListener method sessionCreated.
/**
* Receives notification that a session was created, and adds newly
* created cache for JSP tag body invocations as a session attribute.
*
* @param hse the notification event
*/
public void sessionCreated(HttpSessionEvent hse) {
HttpSession session = hse.getSession();
ServletContext context = session.getServletContext();
// Check if a cache manager has already been created and set in the
// context
CacheManager cm = (CacheManager) context.getAttribute(CacheManager.CACHE_MANAGER_ATTR_NAME);
// to create a new cache
if (cm == null) {
cm = new CacheManager();
}
Cache cache = null;
try {
cache = cm.createCache();
} catch (Exception ex) {
}
// Set the cache as a session attribute
if (cache != null) {
session.setAttribute(Constants.JSPTAG_CACHE_KEY, cache);
}
}
Aggregations