博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JFinal中EhCache利用RMI方式分布式缓存配置
阅读量:6073 次
发布时间:2019-06-20

本文共 2254 字,大约阅读时间需要 7 分钟。

hot3.png

1. 环境二台pc,ip地址分别为ip1:192.168.2.100, ip2: 192.168.2.249

2. JFinal框架的开发环境

3. 配置XML

ip2的xml配置只要将ip地址调换过来即可。

其中 ip1机器的xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<ehcache xmlns:xsi="
         xsi:noNamespaceSchemaLocation="ehcache.xsd"
         updateCheck="false" monitoring="autodetect"
         dynamicConfig="true">
        
    <diskStore path="java.io.tmpdir"/>
   
    <defaultCache
           maxEntriesLocalHeap="10000"
           eternal="false"
           overflowToDisk="true"
           timeToIdleSeconds="20"
           timeToLiveSeconds="60">
    </defaultCache>
    <cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="peerDiscovery=manual,
        rmiUrls=//192.168.2.249:40001/loginCache|//192.168.2.249:40001/answer"
        propertySeparator="," 
         />
       
    <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="hostName=192.168.2.100,
                 port=40001,
                 socketTimeoutMillis=2000" />
     <!--
     ·    将系统登陆用户信息写到缓存里面 ,可以进行验证
      -->
     <cache name="loginCache"
           maxEntriesLocalHeap="500"
           eternal="false"
           overflowToDisk="true"
           timeToIdleSeconds="300"
           timeToLiveSeconds="600"
           diskPersistent="true"
           diskExpiryThreadIntervalSeconds="1"
           memoryStoreEvictionPolicy="LFU"
            >     
            <cacheEventListenerFactory 
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
                properties="replicateAsynchronously=true, replicatePuts=true, 
                            replicatePutsViaCopy=true, replicateUpdates=true, 
                            replicateUpdatesViaCopy=true, replicateRemovals=true, 
                            asynchronousReplicationIntervalMillis=200"/> 
        <bootstrapCacheLoaderFactory 
                class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/> 
      </cache>
    <!--
    Sample cache named sampleCache2
    This cache has a maximum of 1000 elements in memory. There is no overflow to disk, so 1000
    is also the maximum cache size. Note that when a cache is eternal, timeToLive and
    timeToIdle are not used and do not need to be specified.
        答题验证
    -->
    <cache name="answer"
           maxEntriesLocalHeap="1000"
           eternal="true"
           overflowToDisk="false"
           memoryStoreEvictionPolicy="FIFO"
            >
             <searchable/>
    </cache>

   </ehcache>

4. 在JFinal启动的时候进行缓存预处理,在Config文件中加入如下代码。这样在项目启动后即可将缓存加载。

@Override

    public void afterJFinalStart() {
        //系统启动后做缓存数据处理代码
        CacheManager.LoadCache();
        super.afterJFinalStart();
    }

说明: 在项目启动后,会进行一次缓存同步。之后当缓存中有更新,增加,删除等操作会自动进行同步。

转载于:https://my.oschina.net/lovederh/blog/604133

你可能感兴趣的文章
对 Sea.js 进行配置(一) seajs.config
查看>>
dom4j解析xml文件
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>