`
sunlifan05
  • 浏览: 71987 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

oscache学习(三)

阅读更多
在实际应用中除了JSP标签库,还可以使用OSCache提供的Java API .下面我来介绍一个实用的Java类 ,使用GeneralCacheAdministrator来建立,刷新和管理缓存.
应用OSCache Java API的一般步骤:
1 建立一个**Bean的缓存类**Cache.
2 import com.opensymphony.oscache.general.*;import com.opensymphony.oscache.base.*;
3 建立一个**DAO类以便操作数据库(也可将上两项的内容直接合并到这里).
4 在**Cache类里生成一个GeneralCacheAdministrator的实例admin用来管理缓存.
  GeneralCacheAdministrator admin = new GeneralCacheAdministrator();
5 **Cache中的方法 如.clear(),flush().基本调用的为OSCache的 Java API.
6 在**Cache添加getBeans()和getBean()方法 以便获取缓存中的实例对象.具体实现可参照上面的例子.
7 主要用到的GeneralCacheAdministrator的方法有
public Object getFromCache(String key) throws NeedsRefreshException; -- 从缓存中获取一个key标识的对象.
public Object getFromCache(String key, int refreshPeriod) throws NeedsRefreshException ; -- 从缓存中获取一个key标识的对象.  refreshPeriod刷新周期,标识此对象在缓存中保存的时间(单位:秒)

public void putInCache(String key, Object content)  -- 存储一个由Key标识的缓存对象.
public void putInCache(String key, Object content, String[] groups)   -- 存储一个由Key标识的属于groups中所有成员的缓存对象.

public void flushEntry(String key) -- 更新一个Key标识的缓存对象.
public void flushGroup(String group) --更新一组属于groupr标识的所有缓存对象.
public void flushAll() -- 更新所有缓存.

public void cancelUpdate(String key) --- 取消更新 只用于在处理捕获的NeedsRefreshException异常并尝试生成新缓存内容失效的时候.
public void removeEntry(String key) ---从缓中移除一个key标识的对象
public void clear()  --- 清除所有缓存

eg.
------------
///采取补救措施的典型方案

String myKey = "myKey";
String myValue;
int myRefreshPeriod = 1000; //刷新周期1000秒
try {
    //从Cache中获得 要做类型转换
    myValue = (String) admin.getFromCache(myKey, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
    try {
        // Cache中没有则从库获得数据.
        myValue = "This is the content retrieved.";
        // 存放在Cache中 键值myKey
        admin.putInCache(myKey, myValue);
    } catch (Exception ex) {
// 尝试恢复Cache中的内容
        myValue = (String) nre.getCacheContent();
        // 如果Cache中的内容没有复原 则用这个终级方法
        admin.cancelUpdate(myKey);  //取消对myKey的更新 即类似数据回滚
    }
}

///不采取补救措施的典型方案

String myKey = "myKey";
String myValue;
int myRefreshPeriod = 1000;
try {
    //从Cache中获得 要做类型转换
    myValue = (String) admin.getFromCache(myKey, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
    try {
        // Cache中没有则从库获得数据.
        myValue = "This is the content retrieved.";
        // 存放在Cache中 键值myKey
        admin.putInCache(myKey, myValue);
        updated = true;
    } finally {
        if (!updated) {
            // 如果Cache中的内容更新出现异常 则用这个终级方法
        admin.cancelUpdate(myKey);  //取消对myKey的更新 即类似数据回滚
        }
    }
}

注意:
如果一个NeedsRefreshException出现 必须调用admin.putInCache或甚至admin.cancelUpdate来避免死锁情况发生.
---------------

分享到:
评论

相关推荐

    OSCache学习心得

    ### OSCache学习心得 在本篇文章中,我们将详细介绍OSCache框架的基本原理、配置方法以及如何在JSP页面中实现缓存功能,同时也会探讨OSCache与Struts2框架结合使用的具体实践。 #### 一、OSCache简介 OSCache是...

    oscache-2.4.1-full

    - `src`:源代码目录,对于开发者来说,可以查看源代码以便理解和学习OSCache的工作原理。 - `lib`:依赖的第三方库,OSCache可能需要这些库来正常工作。 - `etc`:通常包含配置文件,如`oscache.properties`,...

    oscache-2.2jar包

    6. **lib**:依赖库目录,可能包含了osCache运行所需的其他第三方库文件,例如log4j等日志框架,这些库文件是osCache正常运行所必需的,需要在项目中一并引入。 osCache支持的主要功能包括: - **缓存管理**:动态...

    oscache-2.1.1-full.zip_full_oscache_oscache 2_oscache2

    4. **lib**: 库文件夹,包含osCache运行所依赖的JAR文件和其他第三方库。 5. **oscache-2.1.1.jar**: osCache的核心库,包含了所有osCache的功能实现。 6. **etc**: 配置文件目录,存放osCache的配置文件,如`...

    oscache2.1_ful

    **三、OSCache 集成与配置** 1. **依赖集成**: 在 Maven 项目中,可以通过添加 OpenSymphony 的 OSCache 依赖来引入库。 2. **配置文件**: 使用 `oscache.xml` 文件来定制缓存配置,包括缓存大小、过期策略等。 3. ...

    oscache 集群和数据同步

    《osCache集群与数据同步详解》 osCache是一款开源的Java缓存框架,它提供...通过深入源码学习,开发者能够更好地定制和优化osCache以适应具体业务需求,同时利用集群和数据同步策略,保证分布式环境下的数据一致性。

    OSCache 资料

    压缩包中的`readme.txt`通常包含了安装和使用指南,`etc`目录可能包含配置文件示例,`docs`目录下可能有更详细的文档和API参考,`src`包含源代码供学习和调试,而`lib`目录则可能包含了OSCache运行所需的其他库文件...

    ehcache-1.5.0.jar;jasypt-1.5.jar;oscache-2.4.1.jar...

    在给定的压缩包文件中,我们看到了三个重要的库文件:`ehcache-1.5.0.jar`、`oscache-2.4.1.jar` 和 `jasypt-1.5.jar`。这些是Java开发中常用的开源库,分别对应于缓存管理、对象缓存和加密技术。接下来,我们将深入...

    java页面缓冲

    10. **依赖管理**:`lib`目录包含OSCache运行所需的第三方库,确保项目可以正常运行。 `readme.txt`文件通常会提供项目的基本信息、安装步骤和使用说明,帮助用户快速了解和部署OSCache。 总的来说,OSCache为Java...

    J2EE学习 Ibatis开发资料共享 Ibatis开发资料 Ibatis学习框架 Ibatis开发概要

    - **OSCache**:操作系统级别的缓存,利用操作系统的缓存机制提高数据访问速度。 #### 五、总结 Ibatis作为一款半自动化的ORM框架,虽然不如Hibernate等全自动化ORM框架那样易于使用,但在某些特定场景下能够提供...

    ssm框架整合源码,添加跨服务器上传,回显功能,添加缓存。包含数据库一个表的sql文件。

    SSM框架,全称为Spring、SpringMVC和MyBatis的组合,是Java Web开发中常用的三大组件。这个压缩包提供了SSM框架整合的源码示例,特别加入了跨服务器上传、回显功能以及缓存机制,使得学习者能够更好地理解和实践SSM...

    java必备知识点大全.pdf

    Java必备知识点大全的内容非常丰富,涵盖了Java语言的基础知识、常用的框架以及数据库的应用等方面,是每一个Java开发者学习和面试时的重要参考。下面是对文档中各个知识点的详细解析。 基础篇: JDK常用的包:Java...

    Mybatis框架学习

    MyBatis 默认并未启用二级缓存,需要在映射文件中显式配置,并且可以通过第三方缓存实现如 Ehcache、OSCache、Redis 等增强其功能。 通过以上内容的学习,可以了解到 MyBatis 不仅提供了强大的数据库访问能力,还...

    2022年网络课程MIS的Java实现.docx

    - **OSCache**:一种JSP定制标记库,提供内存缓冲功能,提高系统响应速度,减少服务器负载。 - **Unsession(伪会话管理)**:由于HTTP协议无状态,Unsession通过将会话信息存储在文本文件中,而非服务器内存,...

    整合struct2、spring、hibernate的(带文档,带sql,带所有包)

    6. `oscache-2.4.jar`:OSCache是内存缓存框架,可以用于提高应用程序性能,缓存对象和结果集。 在实际项目中,开发者需要配置相应的XML配置文件,如Struts2的struts.xml、Spring的applicationContext.xml以及...

    ibatis学习文档

    对于更复杂的事务需求,可以借助第三方事务管理器如OSCache。 9. **缓存**:Ibatis提供了一种缓存机制,可以在一定程度上减少数据库的访问,提升性能。缓存分为本地缓存(LOCAL CACHE)和二级缓存(SECONDARY CACHE...

    开源软件架构 软件架构

    开源软件不仅促进了技术创新,还为软件开发者提供了一个学习和借鉴优秀实践的机会。本篇将围绕开源软件架构中的几个核心概念进行深入探讨,包括开源框架的复用机制、基于J2EE的轻量级软件架构、微软的Enterprise ...

    Hibernate教程25_Hibernate缓存

    Hibernate提供了不同级别的缓存,包括一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),还有第三方缓存插件如EhCache、 OSCache等。 **压缩包子文件的文件名称列表:** "s2sh_relation24_3...

    ibatis 开发指南.pdf

    #### 三、ibatis的高级特性 - **数据关联**:ibatis支持多种类型的数据关联,包括一对多关联和一对一关联,以及延迟加载机制。 - **一对多关联**:通过嵌套查询或嵌套结果的方式实现,用于处理多对一或多对多的...

Global site tag (gtag.js) - Google Analytics