配置 JCS

Java Caching System (JCS), Jakarta Turbine 项目的一部分, 与Commons Collections相比更有成熟、更具扩展性。

[b]安装和配置[/b]

在web应用中安装和配置JCS是非常简单的事情。从Jakarta Turbine网站下载压缩文件,解压缩文件到临时目录,并拷贝JSC.jar文件(jcs-1.0-dev.jar)到servlet容器的通用目录(在我的web应用中使用的servlet容器是Tomcat,通用目录在windows下就是%TOMCAT_HOME%\common\lib,在再Unix类型的系统下就是$TOMCAT_HOME/common/lib)。你可能还需要commons-collections.jar, commons-lang.jar, 和 commons-logging.jar 这些文件存在于web应用的类路径下以便使用JCS。


[b]ICacheManager[/b]

这是客户[b][color=green]应用实现所有缓存有关操作[/color][/b](如:存储、访问以及释放缓存中的数据)的主接口(契约)。客户程序可以是JSP、Struts Action类,或者就是一个POJO对象。创建该接口用于对客户端隐藏所有缓存的实现细节,这样当我们将来需要切换另一种的第三方缓存API的时候无需对客户端代码做任何调整。

[b]BaseCacheManager[/b]

这是web门户缓存框架的主类。[color=green][b]是对ICacheManager 接口的最基本实现[/b][/color]。创建BaseCacheManager 用于在一个类中集中所有缓存相关的方法。它被设计为[color=red]单例模式[/color]保证在servlet容器的JVM中有且仅有一个ICacheManager 的实例被创建。在多web服务器/servlet容器实例共同处理web请求的集群环境中,每个JVM将会创建独立的ICacheManager 实例。如果将来你要转换到不同的缓存API ,这是唯一需要为新的缓存API修改的类。如果你切换到JCache-兼容的缓存实现,对缓存管理器的修改将会是很小的。

[b]ICacheLoader[/b]

该接口用于在web客户端实现[b][color=green]真正的数据访问逻辑[/color][/b]。所有需要使用缓存机制的客户端应用必须实现该接口。它包括仅有的一个方法叫做loadCacheObject() ,有两个输入参数:一个String参数制定缓存区域名称,一个对象参数制定缓存键值。这样,缓存管理器将知道在缓存的对象超过指定的“生存时间”的时候,使用哪个客户端程序(运行loadCacheObject 方法)来重载缓存中的对象 。

[b]ICacheKey[/b]

ICacheKey 接口创建的目的是为了[color=green][b]隐藏[/b][/color]特定的创建缓存键值的细节。有时候缓存的键值不是一个简单的字符串。它可能像多个对象组合起来一样复杂,从数据源获取这些值需要多个查找方法而不是单一的方法。在这种情况下, ICacheKey 接口可以被用来定义创建缓存键值的所有复杂的逻辑。这样,缓存键值创建逻辑将会被定义为独立的类。我编写了一个简单的类TestCacheKey 实现了该接口并实现了getCacheKey() 方法来演示使用该接口的方法。

[b]CacheRegions[/b]

一个 缓存区域 被定义为一个组织起来的命名空间[color=green][b]用于容纳一组缓存对象集合[/b][/color]。你[color=red]需要在配置文件中定义缓存区域[/color]来实现在一块单独的内存空间中存储数据,管理缓存数据的有效期限。如果需要的话,对有相似特征的对象(例如:生存时间和业务用途)应该被缓存在相同的缓存区域中,让它们可以在相同的时间失效。我定义了分离的缓存区域来存储静态数据和小变动数据。为了避免同步操作带来的效率影响,我对每个缓存区域使用了单独的Cache (JCS) 实例。

[b]CacheElementInfo[/b]

该类用于[color=green][b]封装所有的缓存统计信息[/b][/color](例如:命中数、不中数、命中比例等),用来监测在web应用中所有缓存对象的效率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值