Package org.jboss.seam.wiki.core.cache

Source Code of org.jboss.seam.wiki.core.cache.EHCacheManager

/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.core.cache;

import org.jboss.seam.annotations.*;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.Component;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.log.Logging;
import org.jboss.seam.log.LogProvider;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.management.ManagementService;

import javax.management.MBeanServer;
import java.lang.management.ManagementFactory;

/**
* Seam-managed EHCache backend, starts and stops one CacheManager per application.
*
* @author Christian Bauer
*/
@BypassInterceptors
public class EHCacheManager {

    private static final LogProvider log = Logging.getLogProvider(EHCacheManager.class);

    private CacheManager manager;
    private boolean registerMonitoring = true;

    public boolean isRegisterMonitoring() {
        return registerMonitoring;
    }

    public void setRegisterMonitoring(boolean registerMonitoring) {
        this.registerMonitoring = registerMonitoring;
    }

    @Create
    public void initCacheManager() {
        log.info("instantiating EHCacheManager from /ehcache.xml");
        // Do NOT use the CacheManage.create() factory methods, as they create a singleton! Our applicatoin
        // has to have its own CacheManager instance, so that we can run several applications in the same
        // JVM or application server.
        manager = new CacheManager();

        if (isRegisterMonitoring()) {
            // Register statistics MBean of EHCache on the current MBean server
            log.info("registering EHCache monitoring MBean");
            MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
            ManagementService.registerMBeans(manager, mBeanServer, false, false, false, true);
        }
    }

    @Destroy
    public void shutdownCacheManager() {
        log.info("shutting down EHCacheManager");
        manager.shutdown();
        manager = null;
    }

    @Unwrap
    public CacheManager getCacheManager() {
        return manager;
    }

    public static CacheManager instance() {
        if (!Contexts.isApplicationContextActive()) {
            throw new IllegalStateException("No active application scope");
        }
        return (CacheManager)Component.getInstance("ehCacheManager");
    }
}
TOP

Related Classes of org.jboss.seam.wiki.core.cache.EHCacheManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.