Web开发人员通过Java的缓存功能可以方便快捷的改善应用程序的性能。对于java应用程序来说,一个强大的分布式Java缓存系统(JCS),是用简单的API就可以进行高度配置的工具。这篇文章概要的介绍了JCS,并且展示了怎样用它为Web应用程序提速。
很多的桌面应用程序正在被重写成Web应用程序,理想情况下,被重写后的应用程序应该和桌面版本的应用程序一样快捷并且具有可伸缩性。几乎所有的Web应用都可以通过JCS在速度方面获得大幅提高。经常性的缓存那些很少改变的的数据是减少用户等待时间的非常好的方法,用简单的API处理缓存数据的功能能够帮助我们实现这个目标。开源的JCS(Apache Jakarta 工程)就是这样的一个工具,这篇文章解释怎样配置和使用JCS来为Web应用程序缓存数据。
JCS概要
JCS是一个用Java语言编写的可以用于创建桌面和Web应用程序的缓存系统,它为一下处理提供了方便的机制
・在缓存中保存数据;
・从缓存中取得数据;
・从缓存中删除数据等。
使用JCS,可以把被缓存数据保存到指定的不同的数据存储区域。JCS定义了四种核心存储区域的类型:memory、disk、lateral和remote。我们可以一起使用这些核心存储区域来获得更大的缓存数据的灵活性。如可以指定首先被使用的存储区域,在缓存失败的时候使用另外一个存储区域。
Memory区
Memory区域是一个使用LRU(Least Recently Used)运算规则的纯内存缓存区域,在内存缓存区被填满的时候,LRU首先删除最近最少被使用的缓存数据。这个数据区有比较好执行效率,因此大多数的用户把它指定为默认首先被使用的缓存区。
Disk 区
磁盘区是Web服务器的文件磁盘上的一个缓存数据的区域。要改善性能,可以在内存中保存缓存数据的键值(keys)而在文件磁盘上缓存实际的数据。在典型的首先使用内存区的JCS的配置中,任何不能在内存中持有的数据,就要被写到磁盘区中。
Lateral 区
Lateral缓存区提供一种把缓存数据分配个横向关联的多个服务器的方法,缓存服务器必须打开一个用于监听的端口,并且建立一个socket链接。因为这个存储区不能保证缓存间数据的一致性,所以这成为我们要面对的潜在问题。但是如果要设计使用这个存储区,那么这个问题是不太可能发生的。
Remote 区
Remote区使用RMI(Remote Method Invocation)提供一个缓存区。这个存储区使用处理缓存数据的远程服务器。远程缓存服务器能够被多个JCS客户端应用程序用于保存缓存数据。被定义的监听器用于搜集来自客户端和服务器的的请求。这个缓存区有助于缓解对系列化和多链接点的开销。
JCS配置
配置JCS的过程就像创建和编写cache.ccf文件一样简单。Cache.ccf文件定义了要使用的缓存区以及这些缓存区的属性或选项,把这个文件结合到应用程序上需要一个方便快捷的刻度缓存的方法。下面是为了显示主要的配置点制作的一个尽可能简单的例子。你可以指定很多选项和配置来适应你所需要的正确的配置。
最基本的cache.cff文件-----一个纯内存缓存配置
jcs.default=jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=
org.apache.jcs.engine.memory.lru.LRUMemoryCache
在上面的配置中,最后一行指定了LRUMemoryCache作为内存缓存,并且在内存中保持的对象数被设定为1000。
大多数的应用程序的缓存系统需要比上面配置更广泛的配置,在下面的配置中,使用了内存区,并且在定义自己的存储区时,使用磁盘区。
jcs.default=DISK_REGION
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=
org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.OUR_REGION=DISK_REGION
jcs.region.OUR_REGION.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.OUR_REGION.cacheattributes.MaxObjects=1000
jcs.region.OUR_REGION.cacheattributes.MemoryCacheName=
org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.OUR_REGION.cacheattributes.UseMemoryShrinker=true
jcs.region.OUR_REGION.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.OUR_REGION.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.OUR_REGION.cacheattributes.MaxSpoolPerRun=500
jcs.region.OUR_REGION.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.OUR_REGION.elementattributes.IsEternal=false
jcs.auxiliary.DISK_REGION=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DISK_REGION.attributes=
org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DISK_REGION.attributes.DiskPath=c:/jcs/disk_region
jcs.auxiliary.DISK_REGION.attributes.maxKeySize=100000
在上面的配置中的第一行把DISK_REGION设定为默认的存储区。DISK_REGION是IndexedDiskCacheFactory类型,并且指定缓存文件要存放在磁盘上的c:/jcs/disk_region目录中。上面配置中的第二组定义了自己存储区,并且为它添加了一些选项,这种同时指定内存区和磁盘区的配置是常用的一种类型。上面配置中第三组中定义一个备用区。
JCS有连个依赖:concurrent和commons-logging(在JCS1.2.7.0以前的版面中,有另外连个依赖:commos-collections和commons-lang)
分享到:
相关推荐
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
借鉴了国内外很多优秀的(Java Ssh/Net NetMvc3.5 ThinkPhp)框架和模式,使用面向对象的开发结构和MVC模式,RoR的ORM映射,封装了CURD和丰富的工具集等,在缓存机制、认证机制和扩展性方面均有独特的表现。 使用Asp...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了 当然你要使用连接池,数据库驱动等功能,还需要自行添置 jar 包。 -------------Nutz 为谁而设计? 如果你觉得 Hibernate 控制比较繁琐,...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
@Weixin需要配置value值,这个实际就是微信服务器配置里面URL最后的部分,当然不包含域名和web应用的上下文,切记,不能包含web应用上下文,其他4个部分配置内容也是公众号配置内容,我们只需要登录到公众号看下填...