<% @ taglib uri = " oscache " prefix = " cache " %>
< cache:flush group = " device_types " scope = " application " />
但是有时需要在java代码中刷新缓存,以下这个OSCacheUtil类可以工作,但是只能在webwork环境内调用:
import javax.servlet.jsp.PageContext;
import org.apache.log4j.Logger;
import com.opensymphony.oscache.base.Cache;
import com.opensymphony.oscache.web.ServletCacheAdministrator;
import com.opensymphony.webwork.ServletActionContext;
/**
* osCache缓存工具类.
* 只能在webwork环境内调用
*
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author 杨杰荣
* @version 1.0
*/
public class OSCacheUtil
{
private static final Logger log = Logger.getLogger( OSCacheUtil.class );
public static final int ALL_SCOPE = 0;
public static final int SESSION_SCOPE = PageContext.SESSION_SCOPE;
public static final int APPLICATION_SCOPE = PageContext.APPLICATION_SCOPE;
private static ServletCacheAdministrator admin = null;
private OSCacheUtil()
{
}
/**
* 刷新osCache组
* @param group Cache组名
* @param cacheScope Cache范围,只能是SESSION_SCOPE或APPLICATION_SCOPE
*/
public static void flushGroup( String group, int cacheScope )
{
initCacheAdmin();
if ( cacheScope == SESSION_SCOPE || cacheScope == APPLICATION_SCOPE )
{
Cache cache = admin.getCache( ServletActionContext.getRequest(),
cacheScope );
cache.flushGroup( group );
}
else
{
log.warn( "A cache group was specified for flushing, but the scope wasn't supplied or was invalid" );
}
}
/**
* 刷新osCache中的某个key'
* @param key String
* @param cacheScope Cache范围,只能是SESSION_SCOPE或APPLICATION_SCOPE
*/
public static void flushKey( String key, int cacheScope )
{
initCacheAdmin();
if ( cacheScope == SESSION_SCOPE || cacheScope == APPLICATION_SCOPE )
{
String actualKey = admin.generateEntryKey(
key, ServletActionContext.getRequest(), cacheScope, null );
Cache cache = admin.getCache( ServletActionContext.getRequest(), cacheScope );
cache.flushEntry( actualKey );
}
else
{
log.warn( "A cache key was specified for flushing, but the scope wasn't supplied or was invalid" );
}
}
/**
* 刷新所有的osCache
* @param cacheScope Cache范围,可以是SESSION_SCOPE,APPLICATION_SCOPE,ALL_SCOPE
*/
public static void flushAll( int cacheScope )
{
initCacheAdmin();
if ( cacheScope == SESSION_SCOPE || cacheScope == APPLICATION_SCOPE )
{
admin.setFlushTime( cacheScope );
}
else
{
admin.flushAll();
}
}
private static void initCacheAdmin()
{
if ( admin == null )
{
admin = ServletCacheAdministrator.getInstance( ServletActionContext.
getServletContext() );
}
}
官网http://www.opensymphony.com/oscache/api/
import org.apache.log4j.Logger;
import com.opensymphony.oscache.base.Cache;
import com.opensymphony.oscache.web.ServletCacheAdministrator;
import com.opensymphony.webwork.ServletActionContext;
/**
* osCache缓存工具类.
* 只能在webwork环境内调用
*
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author 杨杰荣
* @version 1.0
*/
public class OSCacheUtil
{
private static final Logger log = Logger.getLogger( OSCacheUtil.class );
public static final int ALL_SCOPE = 0;
public static final int SESSION_SCOPE = PageContext.SESSION_SCOPE;
public static final int APPLICATION_SCOPE = PageContext.APPLICATION_SCOPE;
private static ServletCacheAdministrator admin = null;
private OSCacheUtil()
{
}
/**
* 刷新osCache组
* @param group Cache组名
* @param cacheScope Cache范围,只能是SESSION_SCOPE或APPLICATION_SCOPE
*/
public static void flushGroup( String group, int cacheScope )
{
initCacheAdmin();
if ( cacheScope == SESSION_SCOPE || cacheScope == APPLICATION_SCOPE )
{
Cache cache = admin.getCache( ServletActionContext.getRequest(),
cacheScope );
cache.flushGroup( group );
}
else
{
log.warn( "A cache group was specified for flushing, but the scope wasn't supplied or was invalid" );
}
}
/**
* 刷新osCache中的某个key'
* @param key String
* @param cacheScope Cache范围,只能是SESSION_SCOPE或APPLICATION_SCOPE
*/
public static void flushKey( String key, int cacheScope )
{
initCacheAdmin();
if ( cacheScope == SESSION_SCOPE || cacheScope == APPLICATION_SCOPE )
{
String actualKey = admin.generateEntryKey(
key, ServletActionContext.getRequest(), cacheScope, null );
Cache cache = admin.getCache( ServletActionContext.getRequest(), cacheScope );
cache.flushEntry( actualKey );
}
else
{
log.warn( "A cache key was specified for flushing, but the scope wasn't supplied or was invalid" );
}
}
/**
* 刷新所有的osCache
* @param cacheScope Cache范围,可以是SESSION_SCOPE,APPLICATION_SCOPE,ALL_SCOPE
*/
public static void flushAll( int cacheScope )
{
initCacheAdmin();
if ( cacheScope == SESSION_SCOPE || cacheScope == APPLICATION_SCOPE )
{
admin.setFlushTime( cacheScope );
}
else
{
admin.flushAll();
}
}
private static void initCacheAdmin()
{
if ( admin == null )
{
admin = ServletCacheAdministrator.getInstance( ServletActionContext.
getServletContext() );
}
}
官网http://www.opensymphony.com/oscache/api/
相关推荐
在提供的压缩包中,`oscache-2.4.1.jar`是osCache的二进制库文件,包含了所有必要的类和资源,可以直接引入到Java项目中使用。`docs`目录可能包含osCache的API文档,帮助开发者了解和使用各个类和方法。`src`目录...
在Java项目中,通常将其添加到项目的类路径(classpath)中,以便程序能够找到并使用osCache的相关类。 接着,我们需要配置osCache的行为,这通常通过oscache.properties文件实现。这个文件定义了缓存的各种参数,...
`oscache-2.1.jar` 是OSCache的核心库文件,包含了所有必要的类和资源,供Java应用程序在运行时加载和使用OSCache服务。这个版本号(2.1)表示这是一个特定的OSCache发行版,不同的版本可能有性能优化、新特性和错误...
2. 将解压后的 `oscache.jar` 文件添加到项目的类路径中。 3. 按照上述方法配置 `web.xml` 文件,启用 `CacheFilter`。 4. 如果需要,根据应用需求调整 `oscache.properties` 文件中的配置参数。 OSCache 还支持...
然后,将其添加到项目的类路径中,可以通过Maven或Gradle等构建工具进行依赖管理。 5.2 全局缓存 全局缓存允许在整个应用程序范围内共享缓存,提高数据访问效率。通过配置CacheFilter,可以拦截所有HTTP请求并执行...
- `oscache-2.4.1.jar`:这是OSCache的核心库文件,包含了所有必要的类和资源,可以被Web应用直接引用。 - `readme.txt`:包含了关于如何安装、配置和使用OSCache的指南,以及可能的变更和注意事项。 - `...
- 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...
1. **oscache-2.2-rc.jar**:这是osCache的核心库文件,包含了所有用于缓存管理的类和方法。"rc"通常表示Release Candidate,意味着这是一个接近最终版本的测试版本,可能已经过广泛的测试,但还有可能存在的小问题...
**osCache缓存技术详解** ...总结来说,osCache是一个强大的工具,它简化了Java应用程序的缓存管理,提高了系统性能。通过合理配置和使用,开发者可以充分利用osCache的功能,为应用程序带来显著的性能提升。
例如,`CacheManager`类是oscache的核心,它负责创建、管理和销毁缓存实例。`Cache`接口则提供了添加、删除、获取和更新缓存项的方法。此外,oscache还支持事件监听机制,可以监听缓存项的添加、删除和更新事件,...
要使用OSCache,我们需要在项目的类路径下引入OSCache的jar包,如`oscache.jar`。然后,在初始化阶段,通过配置文件(通常为`oscache.properties`)设置缓存的相关参数,如缓存大小、过期时间、是否启用持久化等。...
`osCache`的核心库依赖于`commons-logging.jar`,这是一个通用的日志记录工具包,为不同日志框架提供统一的接口。 首先,我们来详细探讨`oscache-2.4.1.jar`这个包。它是`osCache`的二进制库,包含了所有实现缓存...
- **监控与调整**:使用 OSCache 提供的监控工具监控缓存使用情况,根据实际情况调整缓存策略。 总之,Hibernate 结合 OSCache 实现的二级缓存能够显著提升数据读取效率,降低数据库压力,但需要注意合理配置和使用...
首先,你需要将OSCache的JAR文件添加到项目的类路径中。你可以从OpenSymphony的官方网站或者Maven仓库下载OSCache的最新版本。如果使用Maven,可以在pom.xml文件中添加相应的依赖。 **3. 配置OSCache** OSCache的...
此外,osCache还提供了监控工具,如JMX管理接口,可以帮助开发者监控缓存的性能和状态。 总结 osCache作为一款强大的缓存框架,不仅提供了高效的缓存管理,还具备完善的集群和数据同步功能。理解和掌握osCache的...
总的来说,OSCache 提供了一套强大且灵活的工具,用于优化 Java 应用程序的性能,通过缓存数据减少数据库查询,从而降低服务器负载。通过正确配置和使用,开发者可以显著提升应用程序的响应速度和用户体验。
总结来说,OSCache 是一个强大的Java缓存工具,它提供了丰富的功能和高度的灵活性,能够帮助开发者优化应用性能,减少数据库访问压力,尤其是在高并发场景下,其价值更为显著。通过学习和掌握OSCache 的使用,开发者...
综上所述,`osCache`是一个强大的工具,能显著提升Java Web应用的性能。理解并熟练掌握其配置、使用和管理,对于开发高效的应用至关重要。通过实践这个例子,你可以更深入地了解如何在实际项目中运用`osCache`。
使用OSCache需要将对应的JAR包添加到项目的类路径中。`oscache.jar`包含了OSCache的核心功能,而`oscache-tools.jar`则提供了一些辅助工具。可以通过Maven或Gradle等构建工具进行依赖管理,或者直接下载JAR包并添加...
1. 将oscache-2.3.jar添加到项目的类路径中。 2. 配置oscache的XML配置文件,定义缓存策略、大小限制等参数。 3. 在代码中使用`net.sf.oscache.CacheManager`创建和管理缓存实例。 4. 通过`put()`方法添加缓存项,`...