Ehcache2 的配置(不使用配置文件)

EhCache是一个开放源码的,基于标准的高速缓存系统。

网上关于EhCache的使用配置很多,但是一般是基于配置文件的。但是实际应用中。我们可能需要动态的管理缓存,这时候单纯配置文件就不够用了。

所以我们需要编码形式的配置创建缓存。

其实EhCache是支持硬编码方式创建配置的(配置文件只是一种形式,最终也是需要解析成JAVA类模型的)。

这里可以比较一下两种创建EhCache缓存方式的差异。

第一种方式,不使用配置文件,使用JAVA代码创建配置。

Configuration configuration = new Configuration()//
        .diskStore(new DiskStoreConfiguration().path("java.io.tmpdir"))//临时文件目录
        //指定除自身之外的网络群体中其他提供同步的主机列表,用“|”分开不同的主机
        .cacheManagerPeerProviderFactory(new FactoryConfiguration<FactoryConfiguration<?>>()//
                .className(RMICacheManagerPeerProviderFactory.class.getName())//
                .properties("peerDiscovery=manual,rmiUrls=//localhost:40004/metaCache|//localhost:40005/metaCache")//
        )//
        //配宿主主机配置监听程序
        .cacheManagerPeerListenerFactory(new FactoryConfiguration<FactoryConfiguration<?>>()//
                .className(RMICacheManagerPeerListenerFactory.class.getName())//
                .properties("port=40004,socketTimeoutMillis=2000")//
        )//
        .cache(new CacheConfiguration("metaCache", 10000)//缓存名称(必须唯一),maxElements内存最多可以存放的元素的数量
                .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)//清理机制:LRU最近最少使用 FIFO先进先出 LFU较少使用
                .timeToIdleSeconds(1000)//元素最大闲置时间
                .timeToLiveSeconds(2000)//元素最大生存时间
                .eternal(false)//元素是否永久缓存
                .diskExpiryThreadIntervalSeconds(120)//缓存清理时间(默认120秒)
                //LOCALTEMPSWAP当缓存容量达到上限时,将缓存对象(包含堆和非堆中的)交换到磁盘中
                //NONE当缓存容量达到上限时,将缓存对象(包含堆和非堆中的)交换到磁盘中
                //DISTRIBUTED按照_terracotta标签配置的持久化方式执行。非分布式部署时,此选项不可用
                .persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.NONE)).maxEntriesLocalDisk(0)//磁盘中最大缓存对象数0表示无穷大)
                .cacheEventListenerFactory(new CacheConfiguration.CacheEventListenerFactoryConfiguration().className(RMICacheReplicatorFactory.class.getName()))//
        );

CacheManager manager = CacheManager.create(configuration);
Cache cache = manager.getCache("metaCache");//获得缓存

(配置使用连缀写到一起了,实际应用中也可以分开写)

 

第二种方式,使用配置文件。(这种方式网上资料很多,下面例子主要是与上面的例子做对比)
ehache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true">
    <diskStore path="java.io.tmpdir" />
    <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual,rmiUrls=//localhost:40004/metaCache|//localhost:40005/metaCache" />
    <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="port=40004,socketTimeoutMillis=2000" />
    <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
    </defaultCache>
    <cache name="metaCache" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="2000" timeToLiveSeconds="1000" overflowToDisk="false">
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
    </cache>
</ehcache>

JAVA中使用缓存

URL url = getClass().getResource("ehache.xml");
CacheManager manager = new CacheManager(url);
Cache cache = manager.getCache("metaCache");//获得缓存

Ehcache2 的配置(不使用配置文件)

时间: 2024-11-09 17:17:30

Ehcache2 的配置(不使用配置文件)的相关文章

centos yum源配置 与yum配置文件

参考博客 http://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html 1.centos . yum配置文件在目录 /etc/yum.repos.d目录下 yum主要是自动化的升级 安装 和卸载 rpm软件包 David Camp 博客园 首页 新随笔 联系 订阅 管理 随笔-115  文章-0  评论-667 CentOS yum 源的配置与使用 一.yum 简介 yum,是Yellow dog Updater, Modified

Profile配置和加载配置文件

Profile配置 1.Profile是什么 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配置文件或者不同的配置. spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.

Spring进阶之路(11)-使用Aspectj切面配置和XML配置文件方式实现切面编程

异常 在使用的时候,遇到了部分的异常,我用的是最新的Spring版本,Spring-4.2.5版本的,首先确保你的配置文件中引入了下面红色部分. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <span style="color:#ff0000;">

OpenVPN 配置范例及配置文件说明

一.配置文件参考样例 1.Easy-vpn配置范例 1). easy-vpn 证书认证 vpnserver的配置如下: [[email protected] openvpn]# grep -P -v "^(#|;|$)" server.conf local 202.102.1.1 port 1194 proto udp dev tap ca ca.crt cert vpnserver.crt key vpnserver.key  # This file should be kept s

使用Web.Config Transformation配置灵活的配置文件

发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻烦的事情.Web.Config Transformation能够在不同的发布环境下,产生不同的web.config文件,非常方便和实用. 阅读目录: 一.Web.Config Transformation 二.一个实际的例子 三.Web.Config Transformation具体语法 一. We

Farseer.net轻量级开源框架 V1.x 入门篇:数据库配置及其它配置文件

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 V1.x 入门篇:新版本说明 下一篇:Farseer.net轻量级开源框架 V1.x 入门篇:表实体类映射 前言 Farseer.Net是支持多数据库的ORM,使用者通过配置文件即可切换指定的数据库而不需要修改项目中的任何代码.本篇讲述如何进行数据库环境的配置.同时也讲述其它配置文件的使用. 配置文件 1.配置文件的路径: 不管是WebForm.Mvc.WinForm,配置文件统一放在:~

requirejs.config配置paths的时候,配置目录和配置文件的区别

假设我们的项目结构如下: index.html main.js libs --haha.js --cores --cores1.js --core2.js --utils --util1.js --util2.js --services --service1.js --service2.js 如果项目规模比较大,那么js文件将会非常多,通常我们会按照目录进行组织和分组.在上面的代码中如果我们想使用core1.js.core2.js.util1.js.util2.js.service1.js.se

web.xml中配置applicationContext.xml 配置文件的存放位置

一.web.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 二.存放位置: 1:src下面 需要在web.xml中定义如下: 1 2 3 4 <context-param> <param-name>contextConfigLocation</param-name> <param-value

struts2 简单注解配置代替xml配置文件

1. 主要文件 LoginAction.javapackage com.edu.struts2.action;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Namespace;import org.apache.struts2.convention.annotation.Result;import com.opensymphony.xwo