OSCache工具种
发布时间: 2013-03-01 18:33:02 作者: rapoo
OSCache工具类
<% @?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/