org.activiti.test.cache.memcached.MemcachedSimulator.java Source code

Java tutorial

Introduction

Here is the source code for org.activiti.test.cache.memcached.MemcachedSimulator.java

Source

/**
 * Copyright (c) 2005-2012 springside.org.cn
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package org.activiti.test.cache.memcached;

import net.spy.memcached.AddrUtil;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

import com.thimbleware.jmemcached.CacheImpl;
import com.thimbleware.jmemcached.Key;
import com.thimbleware.jmemcached.LocalCacheElement;
import com.thimbleware.jmemcached.MemCacheDaemon;
import com.thimbleware.jmemcached.storage.CacheStorage;
import com.thimbleware.jmemcached.storage.hash.ConcurrentLinkedHashMap;

/**
 * JMemcached?, ?.
 * 
 * @author calvin
 */
public class MemcachedSimulator implements InitializingBean, DisposableBean {

    private static Logger logger = LoggerFactory.getLogger(MemcachedSimulator.class);

    private MemCacheDaemon<LocalCacheElement> jmemcached;

    private String serverUrl = "localhost:11211";

    private int maxItems = 1024 * 100;
    private long maxBytes = 1024 * 100 * 2048;

    @Override
    public void afterPropertiesSet() throws Exception {

        logger.info("Initializing JMemcached Server");

        jmemcached = new MemCacheDaemon<LocalCacheElement>();

        CacheStorage<Key, LocalCacheElement> storage = ConcurrentLinkedHashMap
                .create(ConcurrentLinkedHashMap.EvictionPolicy.FIFO, maxItems, maxBytes);
        jmemcached.setCache(new CacheImpl(storage));

        jmemcached.setAddr(AddrUtil.getAddresses(serverUrl).get(0));

        jmemcached.start();

        logger.info("Initialized JMemcached Server");
    }

    @Override
    public void destroy() throws Exception {
        logger.info("Shutdowning Jmemcached Server");
        jmemcached.stop();
        logger.info("Shutdowned Jmemcached Server");
    }

    public void setServerUrl(String serverUrl) {
        this.serverUrl = serverUrl;
    }

    public void setMaxItems(int maxItems) {
        this.maxItems = maxItems;
    }

    public void setMaxBytes(long maxBytes) {
        this.maxBytes = maxBytes;
    }
}