`

EhCache集群(一)

阅读更多

还是找出时间,把EhCache集群总结下,希望能帮到需要它的人!

另外我的技术群,里面有很多跳槽机会,还有很多美女HR,只要你技术过硬,一定能通过我的群找到更适合,以及你心中的理想工作,我的Q群号:426554356,期待你的加入~

一 首先我们需要一个EhCache的配置文件(ehcacheTask.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="E:/ehcache/diskStore" />
  
  <!-- 配置属性清单 -->
  <!-- peerDiscovery=automatic 为自动
  	   mulicastGroupAddress 广播组地址:230.0.0.1
  	   mulicastGroupPort 广播组端口:40001
  	   timeToLive是指搜索范围:0是同一台服务器,1是同一个子网,32是指同一站点,64是指同一块地域,128是同一块大陆,还有个256
  	   hostName:主机名或者ip,用来接受或者发送信息的接口 
   -->
  <cacheManagerPeerProviderFactory
    class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
    properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
      multicastGroupPort=40001, timeToLive=128,hostName=172.27.10.12" />
      <!-- 在server2 也就是 192.168.1.116 在hostName配置成此地址,就行了  -->
  
  <!-- 
  	   hostName指的是本机,这里注意如果使用的localhost,则只会对本机有效,请使用子网内的ip地址或者主机名
  	   port端口 40001
  	   socketTimeoutMillis是指socket子模块的超时时间,默认是2000ms,注意port两台主机可以相同可以不同。最好相同,个人建议
   -->
  <cacheManagerPeerListenerFactory
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=172.27.10.12, port=40001,socketTimeoutMillis=2000" />
  
  <!-- 
  	   name为cache制定名字
  	   maxEntriesLocalHeap:内存中可驻留最大Element数量
  	   timeToLiveSeconds 生存周期 10000s
  	   overflowToDisk:当内存不足,是否启用磁盘
  	   给myCache价格监听,然后是异步方式,在put,update,copy,remove操作是否复制,然后同步时间1s,bootstrapCacheLoaderFactory 工厂是指启动是指一启动就同步数据
   -->
  <cache name="myCache" maxEntriesLocalHeap="1" eternal="false"
    timeToIdleSeconds="10000" timeToLiveSeconds="10000" overflowToDisk="true">
    <cacheEventListenerFactory
      class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
      properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,
              replicateUpdatesViaCopy=false, replicateRemovals=true,asynchronousReplicationIntervalMillis=1000"/>
     <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/> 
  </cache>
  
</ehcache>

 二 我们需要用Spring把EhCache管理起来 spring-context-cfg.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:task="http://www.springframework.org/schema/task" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	                    http://www.springframework.org/schema/context
	                    http://www.springframework.org/schema/context/spring-context-3.0.xsd
	                    http://www.springframework.org/schema/tx 
	                    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	                    http://www.springframework.org/schema/aop
	                    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
	                    http://www.springframework.org/schema/task
	                    http://www.springframework.org/schema/task/spring-task-3.0.xsd
	                    http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring
	                    http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd
	                    http://www.springframework.org/schema/cache
	                    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd"
	default-autowire="byName">

	<import resource="classpath*:xxxxxx.xml" />

	<!-- 开启EhCache注解功能 -->
    <ehcache:annotation-driven /> 
	<!-- 去掉过期的elements -->
    <ehcache:config cache-manager="cacheManager"> 
		<ehcache:evict-expired-elements interval="60" /> 
	</ehcache:config>
	<!-- 导入EhCache管理的FactoryBean -->
	<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
		<property name="configLocation" value="ehcacheTask.xml" />
	</bean>

 仅此两个步骤!

下面是测试代码

package com.ehcache;  
  
import java.io.IOException;  
import java.io.InputStream;  
  
import net.sf.ehcache.Cache;  
import net.sf.ehcache.CacheException;  
import net.sf.ehcache.CacheManager;  
import net.sf.ehcache.Element;  
public class Test2 {  
     public static void main(String[] args) throws InterruptedException {    
       InputStream is=null;  
    CacheManager manager=null;  
    try {  
      is = Test2.class.getResourceAsStream("/spring-context-cfg.xml");  
         manager = CacheManager.newInstance(is);  
    } catch (CacheException e1) {  
      try {  
        if(is!=null){  
        is.close();  
        is=null;  
        }  
      } catch (IOException e) {  
        e.printStackTrace();  
      }  
      e1.printStackTrace();  
    }  
         
         Cache cache = manager.getCache("myCache");    
      
         Element element = new Element("client3" + System.currentTimeMillis(), "client3");    
         cache.put(element);    
         int i=0;  
         while (true)    
         {    
           Element element2 = new Element("client-3-"+i,i);   
             cache.put(element2);  
             Thread.sleep(3000);    
             System.out.println("\n");    
             for (Object key : cache.getKeys())    
             {    
                 System.out.println(key + ":" + cache.get(key).getObjectValue());    
             }    
             i++;  
         }    
      }  
}  

 所依赖的jar

<dependencies>
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-annotations</artifactId>
			<version>3.3.1.GA</version>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>3.4.0.GA</version>
		</dependency>

		<!-- <dependency> -->
		<!-- <groupId>org.hibernate</groupId> -->
		<!-- <artifactId>hibernate-validator</artifactId> -->
		<!-- <version>3.0.0.ga</version> -->
		<!-- </dependency> -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.13</version>
		</dependency>

		<dependency>
			<groupId>com.travelsky.cupps</groupId>
			<artifactId>oracle</artifactId>
			<version>10.2.0.1.0</version>
		</dependency>

		<!-- spring -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.7.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc-portlet</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
			<classifier>jdk15</classifier>
		</dependency>

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.2.2</version>
		</dependency>

		<dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.2</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-core-asl</artifactId>
			<version>1.9.10</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.10</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>

		<!-- Begin 先保证支持 ehcache 集群内存双机热备份 demo ,售后整理筛选重复的jar版本 -->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
			<version>2.7.0</version>
		</dependency>

		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache-web</artifactId>
			<version>2.0.4</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>
		
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.7</version>
		</dependency>
		
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache-core</artifactId>
			<version>2.6.6</version>
		</dependency>
		<!-- End 先保证支持 ehcache 集群内存双机热备份 demo ,售后整理筛选重复的jar版本 -->

		<!-- Begin 先支持spring ehcache demo 缓存到数据库,售后整理筛选重复的jar版本 -->
		<dependency>
			<groupId>com.googlecode.ehcache-spring-annotations</groupId>
			<artifactId>ehcache-spring-annotations</artifactId>
			<version>1.1.2</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>javax.transaction</groupId>
			<artifactId>jta</artifactId>
			<version>1.1</version>
		</dependency>

<!-- 		<dependency> -->
<!-- 			<groupId>org.hibernate</groupId> -->
<!-- 			<artifactId>hibernate</artifactId> -->
<!-- 			<version>3.2.1.ga</version> -->
<!-- 		</dependency> -->

	<!--??  -->
		<dependency>
	        <groupId>javax.transaction</groupId>
	        <artifactId>transaction-api</artifactId>
	        <version>1.1</version>
	    </dependency>
	    <!-- ?? -->
		<dependency>
			<groupId>javax.persistence</groupId>
			<artifactId>persistence-api</artifactId>
			<version>1.0</version>
		</dependency>

		<dependency>
			<groupId>aspectj</groupId>
			<artifactId>aspectjlib</artifactId>
			<version>1.5.3</version>
		</dependency>

		<dependency>
			<groupId>aspectj</groupId>
			<artifactId>aspectjtools</artifactId>
			<version>1.5.4</version>
		</dependency>
		<!-- End 先支持spring ehcache demo 缓存到数据库,售后整理筛选重复的jar版本 -->

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics