您好,登錄后才能下訂單哦!
在實際應用中除了JSP標簽庫,還可以使用OSCache提供的Java API .下面我來介紹一個實用的Java類
[@more@]在實際應用中除了JSP標簽庫,還可以使用OSCache提供的Java API .下面我來介紹一個實用的Java類 ,使用GeneralCacheAdministrator來建立,刷新和管理緩存.
應用OSCache Java API的一般步驟:
1 建立一個**Bean的緩存類**Cache.
2 import com.opensymphony.oscache.general.*;import com.opensymphony.oscache.base.*;
3 建立一個**DAO類以便操作數據庫(也可將上兩項的內容直接合并到這里).
4 在**Cache類里生成一個GeneralCacheAdministrator的實例admin用來管理緩存.
GeneralCacheAdministrator admin = new GeneralCacheAdministrator();
5 **Cache中的方法 如.clear(),flush().基本調用的為OSCache的 Java API.
6 在**Cache添加getBeans()和getBean()方法 以便獲取緩存中的實例對象.具體實現可參照上面的例子.
7 主要用到的GeneralCacheAdministrator的方法有
public Object getFromCache(String key) throws NeedsRefreshException; -- 從緩存中獲取一個key標識的對象.
public Object getFromCache(String key, int refreshPeriod) throws NeedsRefreshException ; -- 從緩存中獲取一個key標識的對象. refreshPeriod刷新周期,標識此對象在緩存中保存的時間(單位:秒)
public void putInCache(String key, Object content) -- 存儲一個由Key標識的緩存對象.
public void putInCache(String key, Object content, String[] groups) -- 存儲一個由Key標識的屬于groups中所有成員的緩存對象.
public void flushEntry(String key) -- 更新一個Key標識的緩存對象.
public void flushGroup(String group) --更新一組屬于groupr標識的所有緩存對象.
public void flushAll() -- 更新所有緩存.
public void cancelUpdate(String key) --- 取消更新 只用于在處理捕獲的NeedsRefreshException異常并嘗試生成新緩存內容失效的時候.
public void removeEntry(String key) ---從緩中移除一個key標識的對象
public void clear() --- 清除所有緩存
eg.
------------
///采取補救措施的典型方案
String myKey = "myKey";
String myValue;
int myRefreshPeriod = 1000; //刷新周期1000秒
try {
//從Cache中獲得 要做類型轉換
myValue = (String) admin.getFromCache(myKey, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
try {
// Cache中沒有則從庫獲得數據.
myValue = "This is the content retrieved.";
// 存放在Cache中 鍵值myKey
admin.putInCache(myKey, myValue);
} catch (Exception ex) {
// 嘗試恢復Cache中的內容
myValue = (String) nre.getCacheContent();
// 如果Cache中的內容沒有復原 則用這個終級方法
admin.cancelUpdate(myKey); //取消對myKey的更新 即類似數據回滾
}
}
///不采取補救措施的典型方案
String myKey = "myKey";
String myValue;
int myRefreshPeriod = 1000;
try {
//從Cache中獲得 要做類型轉換
myValue = (String) admin.getFromCache(myKey, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
try {
// Cache中沒有則從庫獲得數據.
myValue = "This is the content retrieved.";
// 存放在Cache中 鍵值myKey
admin.putInCache(myKey, myValue);
updated = true;
} finally {
if (!updated) {
// 如果Cache中的內容更新出現異常 則用這個終級方法
admin.cancelUpdate(myKey); //取消對myKey的更新 即類似數據回滾
}
}
}
注意:
如果一個NeedsRefreshException出現 必須調用admin.putInCache或甚至admin.cancelUpdate來避免死鎖情況發生.
---------------
以上就是OSCache提供的最常用的一個實用Java類.OSCache還提供有很多API 這里只是給大家介紹了一點點的,算是拋磚引玉,在今后的開發和應用過程中還需要大家一起去研究.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。