- 浏览: 576450 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
a1641693970:
还不错,学习了
BeanUtils使用总结(二)LazyDynaBean -
zjfshowtime:
很好的办法,学习了。
ORA-28001: the password has expired -
ya654277yo:
哦,多谢分享
Apache整合Tomcat后get方式提交中文乱码问题解决 -
foolkeeper:
nice !!
jvm内存参数设定 -
tracy821:
谢谢了,找了好久才找到
关于Spring 声明式事务处理时,throws exception不回滚的问题
OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持,
下面简单介绍一下OSCache的配置和使用过程。
1.安装过程
从http://www.opensymphony.com/oscache/download.html下载合适的OSCache版本,
我下载的是oscache-2.0.2-full版本。
解压缩下载的文件到指定目录
从解压缩目录取得oscache.jar 文件放到 /WEB-INF/lib 或相应类库目录 目录中,
jar文件名可能含有版本号和该版本的发布日期信息等,如oscache-2.0.2-22Jan04.jar
如果你的jdk版本为1.3.x,建议在lib中加入Apache Common Lib 的commons-collections.jar包。
如jdk是1.4以上则不必
从src或etc目录取得oscache.properties 文件,放入src根目录或发布环境的/WEB-INF/classes 目录
如你需要建立磁盘缓存,须修改oscache.properties 中的cache.path信息 (去掉前面的#注释)。
win类路径类似为c:\\app\\cache
unix类路径类似为/opt/myapp/cache
拷贝OSCache标签库文件oscache.tld到/WEB-INF/classes目录。
现在你的应用目录类似如下:
$WEB_APPLICATION\WEB-INF\lib\oscache.jar
$WEB_APPLICATION\WEB-INF\classes\oscache.properties
$WEB_APPLICATION\WEB-INF\classes\oscache.tld
将下列代码加入web.xml文件中
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>/WEB-INF/classes/oscache.tld</taglib-location>
</taglib>
为了便于调试日志输出,须加入commons-logging.jar和log4j-1.2.8.jar到当前类库路径中
在src目录加入下面两个日志输出配置文件:
log4j.properties 文件内容为:
log4j.rootLogger=DEBUG,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=oscache.log
log4j.appender.file.MaxFileSize=100KB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
log4j.logger.org.apache.commons=ERROR
log4j.logger.com.opensymphony.oscache.base=INFO
commons-logging.properties 文件内容为
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
2.oscache.properties 文件配置向导
cache.memory
值为true 或 false ,默认为在内存中作缓存,
如设置为false,那cache只能缓存到数据库或硬盘中,那cache还有什么意义:)
cache.capacity
缓存元素个数
cache.persistence.class
持久化缓存类,如此类打开,则必须设置cache.path信息
cache.cluster 相关
为集群设置信息。
如
cache.cluster.multicast.ip为广播IP地址
cache.cluster.properties为集群属性
3.OSCache的基本用法
cache1.jsp 内容如下
<%@ page import="java.util.*" %>
<%@ taglib uri="oscache" prefix="cache" %>
<html>
<body>
没有缓存的日期: <%= new Date() %><p>
<!--自动刷新-->
<cache:cache time="30">
每30秒刷新缓存一次的日期: <%= new Date() %>
</cache:cache>
<!--手动刷新-->
<cache:cache key="testcache">
手动刷新缓存的日期: <%= new Date() %> <p>
</cache:cache>
<a href="cache2.jsp">手动刷新</a>
</body>
</html>
cache2.jsp 执行手动刷新页面如下
<%@ taglib uri="oscache" prefix="cache" %>
<html>
<body>
缓存已刷新...<p>
<cache:flush key="testcache" scope="application"/>
<a href="cache1.jsp">返回</a>
</body>
</html>
你也可以通过下面语句定义Cache的有效范围,如不定义scope,scope默认为Applcation
<cache:cache time="30" scope="session">
...
</cache:cache>
4. 缓存过滤器 CacheFilter
你可以在web.xml中定义缓存过滤器,定义特定资源的缓存。
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>60</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>session</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
上面定义将缓存所有.jsp页面,缓存刷新时间为60秒,缓存作用域为Session
注意,CacheFilter只捕获Http头为200的页面请求,即只对无错误请求作缓存,
而不对其他请求(如500,404,400)作缓存处理
5、Cache标签实例分析:
cache标签的属性说明:
key - 标识缓存内容的关键词。在指定的作用范围内必须是唯一的。默认的key是被访问页面的URI和后面的请求字符串。
你可以在同一个页面中使用很多cache标签而不指定他的key属性,这种情况下系统使用该页面的URI和后面的请求字符串,另外再自动给这些key增加一个索引值来区分这些缓存内容。但是不推荐采用这样的方式。
scope - 缓存发生作用的范围,可以是application或者session
time - 缓存内容的时间段,单位是秒,默认是3600秒,也就是一个小时,如果设定一个负值,那么这部分被缓存的内容将永远不过期。
duration - 指定缓存内容失效的时间,是相对time的另一个选择,可以使用简单日期格式或者符合USO-8601的日期格式。如:duration='PT5M' duration='5s'等
refresh - false 或者true。
如果refresh属性设置为true,不管其他的属性是否符合条件,这部分被缓存的内容都将被更新,这给编程者一种选择,决定什么时候必须刷新。
mode - 如果编程者不希望被缓存的内容增加到给用户的响应中,可以设置mode属性为"silent"
其它可用的属性还包括:cron 、groups、language、refreshpolicyclass、refreshpolicyparam。
上面的这些属性可以单独使用,也可以根据需要组合使用,下面的例子将讲解这些常用属性的使用方式。
1. 最简单的cache标签用法
使用默认的关键字来标识cache内容,超时时间是默认的3600秒
<cache:cache> <% //自己的JSP代码内容 %> </cache:cache> |
2. 用自己指定的字符串标识缓存内容,并且设定作用范围为session。
<cache:cache key="foobar" scope="session"> <% //自己的JSP代码内容 %> </cache:cache> |
3.动态设定key值,使用自己指定的time属性设定缓存内容的超时时间,使用动态refresh值决定是否强制内容刷新。
因为OSCache使用key值来标识缓存内容,使用相同的key值将会被认为使用相同的的缓存内容,所以使用动态的key值可以自由的根据不同的角色、不同的要求决定使用不同的缓存内容。
<cache:cache key="<%= product.getId() %>" time="1800" refresh="<%= needRefresh %>"> <% //自己的JSP代码内容 %> </cache:cache> |
4. 设置time属性为负数使缓存内容永不过期
<cache:cache time="-1"> <% //自己的JSP代码内容 %> |
5. 使用duration属性设置超期时间
<cache:cache duration='PT5M'> <% //自己的JSP代码内容 %> |
6. 使用mode属性使被缓存的内容不加入给客户的响应中
<cache:cache mode='silent'> <% //自己的JSP代码内容 %> |
发表评论
-
(转)替代传统事务的并发建议
2016-04-27 00:18 943增删改查是大部分框架 ... -
BCD Conversion in java
2016-03-31 23:39 1838/** * Copyright 2010 Firat ... -
在java代码中获取JVM参数
2014-04-08 11:16 14254近日关注性能调优,关注JMX,发现java.lang.man ... -
GC日志分析配置与工具
2013-05-08 11:32 1353-verbose:gc(打印GC日志) -Xloggc:( ... -
java 实现HTTP PROXY
2012-12-06 17:21 7576日常应用中使用过很多次代理,主要停留在配置级别。 近期无意看 ... -
运行时获取方法调用堆栈信息(java)
2012-09-14 10:53 9699前几日系统流程回调时,一个方法莫名其妙被调用,无法定位调用点。 ... -
EL表达式在tomcat7.0下的new关键字不能使用
2012-08-24 17:25 4062最近生产系统部署个小应用,服务器选型tomcat7.0,一直运 ... -
xfire设置连接超时问题
2012-08-01 17:25 5145近期使用xfire作为客户端访问WS,结果因为目标主机假死 ... -
将多个对象写到一个文件
2012-07-20 17:08 1243来看一段ObjectOutputStream构造方法的源代码 ... -
多线程学习笔记:synchronized
2011-12-15 17:32 843Java语言的关键字,当它 ... -
(转)使用 Eclipse Memory Analyzer 检测内存泄漏问题
2011-12-14 18:10 1141本文是关于在开发 Talend RCP 过程中碰 ... -
多线程学习笔记:thread 线程中的sleep()、wait()、yield()、join()
2011-12-14 17:46 12781.sleep()方法 在指定时间内让当前正在执行的线程暂 ... -
jconsole监控JVM
2011-12-12 17:46 1561本地监控: Jconsole [processed] ... -
Java 6 JVM参数选项大全(中文版)
2011-11-03 15:19 1036本文 是基于最新的SUN官方 文档Java SE 6 ... -
Java实现远程屏幕监视
2011-10-19 17:40 732Robot robot = new Robot(); / ... -
java线程池 常用方法
2011-09-24 22:52 1386在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于 ... -
实现Web程序的自动登录
2011-08-15 22:27 4158有很多 Web程序中第一次登录后,在一定时间内(如 2个小 ... -
JAVA 调用Web Service的方法
2011-08-15 10:28 11551.使用HttpClient 用到的jar文件:comm ... -
APACHE实现负载均衡
2011-08-09 12:58 1292随 着访问量的不断提高,以及对响应速度的要求,进行负载均衡设 ... -
JVM监控工具--jvmstat
2011-08-02 15:42 1275首先就是下载这个工具链接:http://java.sun.co ...
相关推荐
### 三、OSCache使用指南 #### 1. 安装与配置 - **下载**:从OpenSymphony官网下载OSCache的最新版本。 - **解压**:将下载的文件解压到指定目录。 - **新建Web应用**:创建一个新的Web项目。 - **集成OSCache**:...
本文档详细介绍了OSCache的配置与使用,旨在为开发者提供一份全面的参考指南。OSCache是由OpenSymphony开发的开源缓存框架,它为J2EE应用程序提供了高效、灵活的缓存解决方案。 文档介绍 文档目的: 本文档的主要...
- `readme.txt`:包含了关于如何安装、配置和使用OSCache的指南,以及可能的变更和注意事项。 - `www.pudn.com.txt`:可能是来源或者版权信息,也可能包含额外的说明或链接。 - `src`:源代码目录,对于开发者来...
4. **docs**:文档目录,一般包含API文档、用户手册或者开发者指南,帮助开发者理解osCache的使用方法、API接口和最佳实践。 5. **src**:源代码目录,如果提供的话,可以查看osCache的内部实现,这对于学习和调试...
2. **配置文件**: 使用 `oscache.xml` 文件来定制缓存配置,包括缓存大小、过期策略等。 3. **编程接口**: 通过 `com.opensymphony.oscache.base.Cache` 接口,可以在代码中方便地进行缓存操作。 **四、OSCache ...
压缩包中的`readme.txt`通常包含了安装和使用指南,`etc`目录可能包含配置文件示例,`docs`目录下可能有更详细的文档和API参考,`src`包含源代码供学习和调试,而`lib`目录则可能包含了OSCache运行所需的其他库文件...
OSCache的官方文档提供了详细的使用指南、API参考和常见问题解答。文档通常包括以下几个部分: 1. **快速入门**: 教程性质的内容,引导开发者快速了解OSCache的基本用法。 2. **配置指南**: 解释如何配置`oscache....
#### 三、Oscache的使用指南 ##### (一)下载安装 1. **下载Oscache**:访问官方网站http://www.opensymphony.com/oscache/download.html,下载最新版本的Oscache。 2. **解压缩并部署**: - 将解压缩后的`...
这个关键的zip包包含了一些核心的OSCache组件和相关的文档,下面我们将深入探讨OSCache的核心功能、工作原理以及如何使用这些资源。 1. OSCache的核心功能: - 数据缓存:OSCache能够缓存任何Java对象,包括数据库...
iBATIS 2.0 开发指南是一份详尽的技术文档,旨在为开发者提供有关如何使用 iBATIS 进行高效数据库交互的方法和技巧。相较于其他 ORM(对象关系映射)框架如 Hibernate 和 Apache OJB 的“一站式”解决方案,iBATIS ...
`readme.txt`文件通常会提供项目的基本信息、安装步骤和使用说明,帮助用户快速了解和部署OSCache。 总的来说,OSCache为Java开发者提供了一种高效、可扩展的页面缓冲解决方案,是构建高性能Web应用的理想选择。...
《IBatis2开发指南》是一份详尽的文档,旨在指导开发者如何利用IBatis框架进行高效的数据访问层开发。IBatis,现在更常被称为MyBatis,是一个支持普通SQL查询、存储过程及高级映射的优秀开源持久层框架。与Hibernate...
通过使用不同的Cache实现,如MEMORY类型Cache、LRU型Cache、FIFO型Cache以及OSCache,可以减少对数据库的查询次数,从而提高应用程序的性能。其中,MEMORY类型Cache通过弱引用来管理缓存对象,以避免内存泄漏;LRU型...
《ibatis开发指南》经典教材深入讲解了ibatis框架的核心概念和高级应用,为开发者提供了全面的指导。ibatis,作为一款“半自动化”的对象关系映射(Object-Relational Mapping,简称ORM)工具,其设计理念与传统的...