`
greemranqq
  • 浏览: 972060 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

spring +ehcache 持久化数据,重启恢复

阅读更多

          今天有个需求,要求用户登录的时候展示一些信息,但是这些信息跨系统反复调用,比较慢,因此做数据缓存。有些系统不大,就ehcache 就可以了。但是因为有个子系统发布比较平凡,不希望重启之后缓存数据丢失,因此做持久化处理。框架是jfinal+spring+ehcache ,东西没啥区别。

         下面是遇到的几个问题:

         1.同一个类里面,A方法  上面加上注解 缓存,然后B方法 去调用,缓存无效..

            解决:隔离开,A B方法放两个不同的类里面。

 

          2.持久化的数据无法恢复。

             解决:ehcache 和其他缓存类似,需要flush 或者shutdown 才会持久化到硬盘。

             会生成.data 的数据文件和 .index 的索引文件,方便重启恢复。

 

         3.想利用spring 的注解,不想手动shutdown ,因此web.xml 配置listener 监听,在销毁的时候进行shutdown,这里利用ehcache 的监听.

        

    <!-- ehcache 磁盘缓存 监控,持久化恢复 -->
    <listener>
        <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
    </listener>

    源码也就几句话:

 

   

 /**
     * Notification that the servlet context is about to be shut down.
     * <p/>
     * Shuts down all cache managers known to {@link CacheManager#ALL_CACHE_MANAGERS}
     *
     * @param servletContextEvent
     */
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        List knownCacheManagers = CacheManager.ALL_CACHE_MANAGERS;
        if (LOG.isDebugEnabled()) {
            LOG.debug("Shutting down " + knownCacheManagers.size() + " CacheManagers.");
        }
        while (!knownCacheManagers.isEmpty()) {
            // 关闭的时候 刷到磁盘
            ((CacheManager) CacheManager.ALL_CACHE_MANAGERS.get(0)).shutdown();
        }
    }

   

 

       4.IDE 工具是idea ,估计eclipse 差不多,点击红色按钮和重启按钮的时候,监听无法执行,猜测执行的类似kill -9 直接杀死进程的方法,而不是kill -15 比较安全的关闭。

      解决:由于idea 集成了maven 很简单,名字添加一个jetty:stop 命令,就行了,tomcat 也有命令,看服务而已。

 

       小结:

        1.这里记录一下经验,和一些零碎的小问题

        2.ehcache 其实挺强大的,特别是2.8 以后的版本,更新挺多的,使用比较方便

        3.使用服务器的时候,有些持久化缓存(包括redies),尽量用正常的方式关闭或者重启,别太暴力~。~

0
0
分享到:
评论
1 楼 di1984HIT 2016-05-30  
     

相关推荐

    ssm多模块基础框架+dubbo+ehcache

    它还支持数据持久化,即使在重启后也能恢复缓存内容。 在"ssmDemo"项目中,这些技术可能被整合在一起,创建了一个多模块的项目结构,以便更好地管理和组织代码。通常,项目会分为服务提供者模块(包含业务逻辑和...

    Hibernate+EhCache配置及使用说明详解

    -- 显示 Hibernate 持久化操作所生成的 SQL --&gt; &lt;prop key="hibernate.show_sql"&gt;true &lt;!-- 将 SQL 脚本进行格式化后再输出 --&gt; &lt;prop key="hibernate.format_sql"&gt;true ...

    spring整合EhCache 简单例子

    它支持本地缓存、分布式缓存,并且可以持久化到磁盘,以防内存溢出或服务器重启时丢失数据。EhCache提供了一套API,可以方便地在Java应用中集成和管理缓存。 2. **Spring的缓存抽象** Spring 3.1及以上版本引入了...

    Ehcache分布式缓存与其在SpringBoot应用

    此外,Ehcache还具备在虚拟机重启后自动将缓存数据持久化到磁盘的功能,确保了数据的可靠性。 在分布式环境中,Ehcache通过使用JGROUP来实现分布式缓存。JGROUP是一个用于构建可靠集群通信的库,可以提供组成员资格...

    BoneCP连接池和Ehcache注解缓存整合到Spring

    2. **持久化**:支持将缓存数据持久化到硬盘,即使服务器重启,也能恢复缓存状态。 3. **分布式缓存**:通过 Terracotta 平台,Ehcache 可以实现跨服务器的分布式缓存,适合大规模集群环境。 4. **注解支持**:在...

    ehcache.jar及源码

    5. **持久化(Persistence)**:Ehcache支持将缓存数据持久化到硬盘,以便在系统重启后恢复数据。 6. **分布式缓存(Distributed Caching)**:Ehcache可以通过网络在多台机器之间共享缓存数据,实现分布式缓存,提高...

    ehcache官方文档

    - **持久化**:可以配置Ehcache将缓存数据存储到硬盘上,以防止应用重启后数据丢失。 - **缓存分区**:Ehcache支持将缓存划分为不同的区域,每个区域有自己的配置,这有利于管理和优化不同类型的缓存需求。 4. **...

    ehcache三个小demo

    - **持久化(Persistence)**:除了内存缓存,Ehcache还可以将数据持久化到硬盘,保证重启后数据依然可用。 - **分布式缓存(Distributed Caching)**:在多节点环境下,Ehcache支持分布式缓存,确保数据的一致性和...

    ehcache 2.10.1

    3. **持久化**:除了内存存储,Ehcache还支持将数据持久化到磁盘,即使在系统重启后,缓存数据仍然可恢复,这增加了系统的容错能力。 4. **缓存预热**:通过预加载机制,Ehcache可以在应用启动时或者根据配置自动...

    ehcache配置使用详解

    5. **缓存数据持久化**:ehcache能够在虚拟机重启时,将缓存数据写入磁盘,避免数据丢失。 6. **分布式缓存**:通过RMI(Remote Method Invocation)和可插拔API,ehcache支持跨机器的缓存共享,适用于集群环境。 7....

    ehcache2.4.3

    6. **磁盘持久化**:除了内存存储,Ehcache还支持将数据持久化到硬盘,防止因系统重启导致的数据丢失。 【标签】"jar"表明这是一个Java Archive文件,它是Java平台的标准封装格式,包含编译后的类文件和其他资源,...

    ehcache的Jar包

    2. **磁盘存储**:除了内存缓存,EhCache还支持将超出内存容量的数据存储到硬盘上,形成持久化缓存,以便在重启后仍能恢复数据。 3. **分布式缓存**:EhCache提供了分布式缓存能力,允许在多台服务器之间共享缓存,...

    ehcache-2.10.3-distribution.tar.gz

    - **持久化**:可以将缓存数据存储到磁盘上,确保在服务器重启后仍能恢复缓存状态。 - **分布式缓存**:支持多节点间的缓存同步,实现集群环境下的高速缓存共享。 - **缓存复制**:在多个节点间自动复制缓存数据,...

    Ehcache参考指南(英文版).pdf

    2. **持久化**:Ehcache支持将缓存数据持久化到磁盘,即使在应用程序重启后,仍能恢复缓存状态。 3. **分布式缓存**:Ehcache具备分布式缓存能力,可以在多台服务器之间共享缓存,以支持大规模的应用环境。 4. **...

    ehcache-2.5.1-distribution.tar.gz最新下载

    9. **持久化**:Ehcache支持将缓存数据持久化到磁盘,即使在应用重启后,仍能恢复缓存状态。 10. **缓存复制**:在分布式环境中,Ehcache可以配置为在集群内的节点间复制缓存项,以确保数据一致性。 11. **内存...

    ehcache二级缓存配置文件

    - `diskPersistent`: 是否持久化磁盘存储,重启后是否保留数据。 - `diskExpiryThreadIntervalSeconds`: 盘清理线程运行间隔。 - `memoryStoreEvictionPolicy`: 内存不足时的淘汰策略,如LRU(最近最少使用)。 **4...

    ehcache缓存入门项目

    当内存中的缓存数据达到上限或为了防止数据丢失,EhCache支持将数据持久化到硬盘,这样即使服务器重启,数据也能恢复。 9. **最佳实践** - 应合理设置缓存大小,避免内存溢出。 - 对于敏感数据,需考虑安全性和...

    Ehcache官方文档.pdf

    - **持久化的磁盘存储**:即使虚拟机重启也能保持数据完整性。 - **按需刷新至磁盘**:允许手动触发数据的持久化操作。 - **监听器**: - **缓存管理器监听器**:监控缓存管理器的生命周期事件。 - **缓存事件...

    Ehcache最新版本的UserGuide

    - **持久化磁盘存储**:数据可在虚拟机重启后保留。 - **按需刷新到磁盘**:灵活控制数据刷新时机。 ##### 4.7 监听器 - **缓存管理器监听器**:监控缓存管理器的状态变化。 - **缓存事件监听器**:跟踪缓存中的...

Global site tag (gtag.js) - Google Analytics