本篇文章是个人实践证明的,下面是步骤:
1 在spring的配置文件中启用spring对ehcache的注解, 并声明cacheManager,指明ehcache的配置文件路径:
<!-- spring cache 配置 --> <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 --> <cache:annotation-driven cache-manager="cacheManager"/> <!-- ===========================spring cache 基于 ehcache 的实现============================= --> <!-- cacheManager工厂类,指定ehcache.xml的位置 --> <!-- EhCache library setup --> <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache/ehcache.xml"/> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache"/> <cache:annotation-driven />
2 配置ehcache配置文件:
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"> <!-- accountservice 缓存配置 --> <!--EHCache分布式缓存集群环境配置--> <!--rmi手动配置--> <cacheManagerPeerProviderFactory class= "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual,rmiUrls=//localhost:40000/user"/> <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=localhost,port=40001, socketTimeoutMillis=120000"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/> </defaultCache> <cache name="user" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="100000" timeToLiveSeconds="100000" overflowToDisk="false"> <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/> </cache> </ehcache>
使用RMI的方式在集群的server进行缓存复制
3 在代码中使用注解的方式进行缓存声明:
@Cacheable(value = "user", key = "'all'") public List<SerializableJSONObject> listMessage () { String sql = "select * from prc_mbl_msg"; System.out.printf("我在测试缓存!!!"); return this.baseDao.sqlQueryResult(sql, new Object[]{}); }
value知道缓存的名称,key是缓存对应的key
清除缓存:
@CacheEvict(value = "user", key = "'all'") public void removeMessageCache () { System.out.printf("我再去除测试!!!"); }
4 缓存测试发现的问题
被缓存的对象必须实现Serializable接口,如果缓存的为子类,子类实现了Serializable接口,父类没有实现Serializable接口,那么缓存复制的时候会把父类里面的属性复制丢失!
5 关于所需要的jar包
<dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.7.0</version> </dependency>
maven中央仓库中最高的版本为2.8.3,在tomcat 7下使用最高版本的jar会报错,提示DiskStore这个类中缺少一个内部类,我看了jar包的源码,2.8版本确实没有对应的内部类,使用2.7版本的就正常了!
相关推荐
为了解决这个问题,我们需要配置EhCache缓存集群,以确保数据更新能在各个进程中同步。以下是如何使用EhCache实现缓存集群的详细步骤: 首先,确保缓存对象是可序列化的。在上述例子中,`User`实体需要实现`...
1. **负载均衡**:Ehcache集群可以将数据分布在多个节点上,从而将负载分散到各个服务器,降低单个节点的压力。 2. **高可用性**:如果一个节点失效,其他节点仍然可以提供服务,确保系统连续运行。 3. **数据冗余**...
在 Spring 中配置分布式缓存需要额外的设置,如配置集群地址和端口。 7. **性能优化**:理解 Ehcache 的性能调优是至关重要的,包括内存管理、缓存策略(如 LRU、LFU 等)、缓存加载策略等。 8. **工具支持**:...
- **与Spring、Hibernate的集成**:Ehcache可以非常容易地与Spring和Hibernate框架集成,简化缓存的配置和使用。 #### 二、准备工作 在开始使用Ehcache之前,需要先完成以下准备工作: 1. **下载JAR包**: - **...
3. 配置Spring:在Spring的配置文件中启用缓存支持,并指定Ehcache为缓存管理器。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
集群配置通常涉及以下步骤: - 定义集群模式,如复制或分区。 - 设置集群通信协议和端口。 - 配置数据一致性策略,如写入策略和故障恢复机制。 - 调整缓存过期策略,以适应网络延迟和节点状态变化。 总之,ehcache...
3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,添加Ehcache的bean配置,以使Spring能够管理Ehcache: ```xml <bean id="cacheManager" class="org.springframework.cache.ehcache....
JGROUP是一个用于构建可靠集群通信的库,可以提供组成员资格、故障检测、传输协议等多种功能,使得Ehcache能够在多个节点之间共享和同步缓存数据。Ehcache的分布式特性允许在大型系统中进行负载均衡,提高应用性能,...
Spring Boot简化了配置过程,使得我们可以快速地将EHCache引入到我们的应用中,从而提高应用程序的性能,减少对数据库或其他资源的重复访问。下面,我们将会详细讲解相关知识点。 首先,了解**Spring Boot**。...
在“EhCache-Cluster-Tester.zip”这个压缩包中,包含了一个关于EhCache集群配置和测试的实例,这对于理解如何在分布式环境中使用EhCache至关重要。 EhCache的集群功能允许多个节点共享同一份缓存数据,实现高可用...
3. **分布式缓存**:通过 Terracotta 平台,Ehcache 可以实现跨服务器的分布式缓存,适合大规模集群环境。 4. **注解支持**:在Spring中,可以通过`@Cacheable`、`@CacheEvict`等注解方便地进行缓存操作。 在Spring...
#### 四、Ehcache分布式缓存集群配置 为了实现Ehcache在分布式环境下的缓存一致性,可以采用不同的网络连接策略: - **RMI**:远程方法调用,适用于小型或中型应用。 - **JGroups**:一种组通信库,适用于大型集群...
- 配置 Spring 参数:在 Spring 的配置文件中,声明并配置 Ehcache 的 Bean,以便 Spring 管理 Ehcache。 4.7. 客户端使用 客户端可以通过 Spring 注入的 Cache Manager 实例,透明地进行缓存操作,提高代码的...
例如,通过集群配置实现缓存的高可用性,或者使用 Terracotta Server 作为分布式缓存解决方案。 **性能优化和最佳实践** 1. 合理设置缓存大小:根据应用的实际情况,调整缓存的最大容量,避免因缓存溢出导致的问题...
本篇文章将深入探讨如何使用注解配置Spring与EHCache或OSCache这两个流行的Java缓存解决方案。以下是对该主题的详细阐述: 1. **Spring缓存抽象** Spring 3.1引入了一种统一的缓存抽象,它允许开发者在不关心具体...
- **集群配置方式**: - **RMI**:通过远程方法调用来实现节点间的通信。 - **Socket**:通过自定义的Socket通信机制实现数据同步。 - **其他插件**:Ehcache还支持多种第三方插件来实现分布式缓存功能。 #### ...
1. **ehcache.xml**: 这是Ehcache的配置文件,用于定义缓存的行为和设置。开发者可以在这里指定缓存的大小、过期策略、缓存区域等参数。XML结构允许以结构化的方式配置复杂设置。 2. **ehcache.xsd**: 这是一个XML ...