WebSphere Application Server 動態快取記憶體技術教程

CloudSpace發表於2010-08-17
沈 慧峰, 效能工程師, 道富資訊科技(浙江)有限公司

簡介: 快取是目前大型複雜應用特別是網際網路應用中提升效能和併發能力的關鍵技術之一。動態快取記憶體服務(DynaCache)是 IBM™ WebSphere® Application Server(後面簡稱 WAS)提供的擴充套件服務之一。該服務提供極大的靈活性,開發人員可以根據不同的場景選擇不同的程式設計模式來滿足開發的需要。恰當的使用該服務可以極大的提升執行在 WAS 平臺上的應用系統的的響應能力和吞吐能力,在同等的硬體條件下提供更強大的處理能力,滿足企業日益增長的業務需要。

開始之前

關於本教程

通過本教程,您可以瞭解如何使用 WAS 的動態快取記憶體服務快取 Servlet 物件,JSP 頁面,WebSphere Command 物件;如何在 cachespec.xml 檔案中進行配置或者編寫唯一標識的生成類實現根據業務需要快取同一個物件的不同版本。本教程也涉及直接操作動態快取和使用 Cache Monitor 監控和管理動態快取記憶體。

目標

完成本教程後,您應該瞭解如何:

  • 配置 cachespec.xml 快取 Servlet 或 JSP 頁面
  • 在 cachespec.xml 中配置快取規則快取同一個 Servlet 物件或 JSP 頁面的不同版本
  • 編寫 WebSphere Command 物件
  • 編寫生成快取唯一標識的 Java Class
  • 直接操作動態快取記憶體
  • 安裝並使用 Cache Monitor

先決條件

要成功使用本教程,您應熟悉 Java 開發的一般知識,特別是具備伺服器端 Java 開發的基礎。您應瞭解 WAS 和 Rational® Application Developer for WebSphere® Software (下面簡稱 RAD) 的一般概念,並熟悉部署描述符和 WAR 存檔等基本的 J2EE 概念,對 WAS 的配置和管理有所瞭解。

系統要求

您需要下載下列必需的(免費)應用程式,才能使用本教程及其中的示例程式碼:

  • IBM™ Rational® Application Developer for WebSphere® Software
  • IBM™ WebSphere® Application Server 6.1 或者以上版本

如果讀者無法獲得 RAD 和 WAS 的正式版本,可以考慮下載和使用 RAD 的試用版WebSphere® Application Server for Developers。如果讀者不想下載 RAD 的試用版,作者也提供了可供直接編譯的原始碼包 DynaCacheTutorial.zip,下載並將其解壓縮到某個目錄,修改 was.properties 檔案中 was.app.dir 的值為的 WAS 的目錄,然後執行“ant war”進行編譯。使用這種方法使用者可以用您所喜歡的編輯器直接修改相應的程式碼並進行編譯安裝。

硬體配置應包括:支援上面列出的軟體,並且至少具有 2GB 記憶體(推薦為 3GB)。本教程中的說明基於 Microsoft® Windows® 作業系統,但也適用於 Linux® 和 UNIX® 作業系統。

引言

WAS 動態快取記憶體概述

高速動態快取做為 WAS 的一個擴充套件服務從 5.0.2 開始就被包含在從 WAS Express 開始的各個版本。該服務可以快取 WebSphere Command 物件、Servlet 和 JavaServer Pages(JSP)的輸出,從而明顯提升應用程式效能。動態快取記憶體服務位於應用程式伺服器 Java 虛擬機器(JVM)內部,通過攔截對可快取記憶體物件的呼叫隱式的實現了對快取的呼叫,程式設計師甚至意識不到它的存在。圖 1 展示了快取命中和不命中的兩種情況下系統的流程,如果快取命中將避免執行後面複雜的商業邏輯,業務邏輯的執行時間大大縮短了。


圖 1. 快取命中和失敗
快取命中和失敗

在 WAS 中開啟 Servlet cache

預設情況下 WAS 是開啟動態快取記憶體服務的,使用者可以按照以下的步驟檢查該服務是否開啟並開啟 Servlet 快取

  1. 登入 WAS 的管理控制檯,如 http://localhost:9060/ibm/console
  2. 輸入管理員的使用者名稱和密碼
  3. 單擊 Servers > WebSphere application servers > server1,在 Configuration 選項卡下面選擇 Container Services > Dynamic cache service,如 圖 2
  4. 確保在 圖 3“Enable service at server startup”被選中(在 WAS 7 則沒有這個選項,使用者是不能夠關閉動態快取記憶體服務的


圖 2. 開啟動態快取記憶體服務
開啟動態快取記憶體服務

圖 3. 確認動態快取記憶體已被開啟
確認動態快取記憶體已被開啟

然後確認 Servlet 的快取被開啟了,預設情況下 WAS 是不開啟該選項的,依照如下的步驟啟動該功能

  1. 單擊 Servers > WebSphere application servers > server1,在 Configuration 選項卡下面選擇 Web Container Settings > Web container
  2. 圖 4 選中“Enable Servlet caching”,然後選擇“OK”按鈕
  3. 在接下來的介面選擇“Save”連線,儲存修改


圖 4. 開啟 Servlet 快取
開啟 Servlet 快取

在本文中我們會建立一個簡單的 Web 應用,對顯示的時間進行快取。該例子會有 Servlet,JSP,WebSphere Command 等多個版本

建立 WEB 工程

按照以下步驟建立一個 WEB 工程

  1. 啟動 Rational Application Developer for WebSphere
  2. 建立一個 Dynamic Web Project,以 DynaCacheTutorial 為工程的名字,將 Dynamic Web Module version 選擇為 2.4,這樣編譯的 WAR 就可以在 WAS 6.1 中部署了
  3. 同時建立一個名為 DynaCacheTutorialEAR 的 EAR 工程,將 EAR version 設為 1.4,同樣這樣確保可以部署到 WAS 6.1 上面
  4. 將 DynaCacheTutorial 加到 DynaCacheTutorialEAR 工程中去
  5. 將 DynaCacheTutorialEAR 部署到 WAS 上確保執行沒有錯誤


快取 Servlet

普通的 Servlet

在本節開始以前請確保您按照 在 WAS 中開啟 Servlet cache 一節的方法啟用了 Servlet 快取。下面從一個簡單的 Servlet 例子開始介紹如何使用動態快取記憶體,依照下面的的步驟建立一個 Servlet。

  1. 選擇 File > Other > Web > servlet
  2. 在接下來的介面 Java package 填為 demo,Class name 填為 UnCachedServlet,選 Next 進入下一個介面
  3. 在接下來的介面接受預設的設定(Name:UnCachedServlet,URL Mappings:/UnCachedServlet),選 Next 進入下一個介面
  4. 在接下來的介面中取消 doPost() 選中,選 Finish 結束設定
  5. 將 doGet() 方法替換如 清單 1 所示


清單 1. 不被快取的 Servlet - UnCachedServlet.java
				 
 public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
  response.setContentType("text/html"); 
  PrintWriter ut = response.getWriter(); 
  out.println(""-//W3C//DTD HTML 4.01 Transitional//EN\">"); 
  out.println(""); 
  out.println("  A Servlet"); 
  out.println("  "); 
  out.println("    The Current time is " + new java.util.Date() + "
"); out.println(" "); out.println(""); out.flush(); out.close(); }

清單 1 是一個非常簡單的在頁面上顯示當前時間的 Servlet,在 WAS 部署成功以後,在瀏覽器的位址列中輸入如下的地址 http://localhost:9080/DynaCacheTutorial/UnCachedServlet,輸出可能如 圖 5(當然您得到的是當前的時間)


圖 5. 未被快取的 Servlet 的輸出
未被快取的 Servlet 的輸出

每當您重新整理這個頁面的時候,輸出的時間應該如預期的總是返回當前時間。

被快取的 Servlet

接著建立另一個 Servlet(demo.CachedServlet,Servlet 名字為 CachedServlet,對映為 /CachedServlet),並嘗試快取其內容,將其 doGet() 方法替換如 清單 2


清單 2. 被快取的 Servlet - CachedServlet.java
				 
 public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
  response.setContentType("text/html"); 
  PrintWriter ut = response.getWriter(); 
  out.println(""-//W3C//DTD HTML 4.01 Transitional//EN\">"); 
  out.println(""); 
  out.println("  A Servlet"); 
  out.println("  "); 
  out.println("

The time will not change unless time is out or cache is cleared

"); out.println(" The time is " + new java.util.Date() + "
"); out.println(" "); out.println(""); out.flush(); out.close(); System.out.println(this.getClass().getName() + ".doGet() run!!!"); }

在 WAS 上面部署後在瀏覽器的位址列中輸入如下的地址 http://localhost:9080/DynaCacheTutorial/CachedServlet,輸出可能如 圖 6


圖 6. 被快取的 Servlet 的輸出
被快取的 Servlet 的輸出

但是當再次重新整理的時候,時間仍然是馬上發生變化的,快取顯然並沒有起作用。快取不是無緣無故的就發生了的,是需要進行配置。下面做最重要的步驟,在 WebContent/WEB-INF 下建立一個名為 cachespec.xml 的檔案,其內容如 清單 3


清單 3. 在 cachespec.xml 指定 Servlet 的快取策略
				 
  
  
  
   
    servlet 
    /CachedServlet 
    false 
    false 
     
      0 
      300 
     
   
 

手工重新部署或者等待 RAD 自動重新部署以後再次重新整理 http://localhost:9080/DynaCacheTutorial/CachedServlet,列印出來的時間竟然神奇般的凝固不變了。但超過五分鐘以後重新整理時間就會發生變化。就這樣通過建立了一個 XML 檔案並在其中指定需要快取的 Servlet 的名字和時間就完成了 Servlet 的快取了,而程式碼本身沒有任何的改變。這就是動態快取記憶體強大的地方,它儘可能的採取了非侵入的方法不會汙染已有的程式碼了。


快取 JSP

Servlet 現在已經很少被用來產生頁面,下面介紹如何在動態快取記憶體中快取 JSP 頁面。依下面的步驟建立一個 JSP 頁面

  1. 選擇 File > Others
  2. 在檔案型別中選擇 Web Page,選擇 Next 進入下一個介面
  3. 選擇 JSP,檔名為 cached.jsp,選擇 Finish 完成設定
  4. 將 JSP 頁面的主體部分的替換如 清單 4 所示
  5. 然後在 cachespec.xml 中新增如 清單 5 所示的內容


清單 4. 被快取的 JSP
				 
  
  

The time will not change unless time is out or it's cleared

The time is:


清單 5. 在 cachespec.xml 快取 JSP
				 
  
  servlet 
  cached.jsp 
  false 
  false 
   
    0 
    300 
   
 

通過瀏覽器訪問 http://localhost:9080/DynaCacheTutorial/cached.jsp,得到的結果和上一章 Servlet 一樣的快取效果效果。在 WAS 中快取 JSP 就是如此的簡單。


快取不同的內容

前面無論是 Servlet 還是 JSP 總是輸出同樣的結果,實際應用中這種情況很少出現;往往是根據不同的輸入引數,輸出不同的結果。下面就模擬這樣場景,根據不同的使用者快取不同的時間。首先在 WebContent 目錄下建立兩個 parameter.jsp 和 embed.jsp 兩個 JSP 檔案,內容分別如 清單 6清單 7,然後在 cachespec.xml 中新增如 清單 8 的內容。請注意快取的是 embed.jsp 而不是 parameter.jsp。


清單 6. parameter.jsp
				 
  
  
  
  
  
  
 parameter.jsp 
  
  
  
   

  

Input Your Name:

The current time is:


清單 7. embed.jsp
				 
  
 


清單 8. embed.jsp 的 JSP 的快取策略
				 
  
  servlet 
  embed.jsp 
  false 
  false 
   
     
      false 
     
    0 
    300 
   
 

在瀏覽器中輸入 http://localhost:9080/DynaCacheTutorial/parameter.jsp,分別輸入 WAS 和 Rational,點選“Submit”按鈕,您會發現 WAS 和 Rational 快取的時間各不相同,且相互不影響。先觀察一下 Cache Monitor 的輸出(Cache Monitor 的安裝和使用可以參見 Cache Monitor 一章),該輸出類似於 圖 7,明顯 embed.jsp 有兩個不同的頁面快取。觀察其唯一標識(Cache ID)的差別就是 name=?。動態快取記憶體是如何做到這個的?關鍵在於 cachespec.xml 中快取策略使用了 request 中的名為 name 的引數做為快取唯一標識。從這個例子很容易將其擴充套件到如下兩種應用環境:

  • 實現一個頁面根據不同的輸入引數快取不同的結果
  • 只快取頁面的一個部分,對於 Master-Detail 頁面結構的設計非常有用


圖 7. 同一個頁面的多個快取版本
同一個頁面的多個快取版本

讀者可以把動態快取記憶體看成一個複雜的 hashtable,可以通過唯一標識定位到快取的一個物件。

Java Command 物件

有時候要快取不僅僅是 Servlet 和 JSP 頁面,使用者還想快取一個 Java 類的呼叫結果。WAS 提供了一種 command 的模式幫助使用者快取 Java 物件。使用該模式前使用者必須提供所有的前置條件,然後執行 execute() 方法,該方法會處理快取的命中,最後獲取所需的資料。如 圖 8 所示,要取得股票的價格,使用者必須先呼叫 setSymbol() 提供股票程式碼,然後執行取價格的邏輯 execute(),最後呼叫 getPrice() 獲得價格。下面是編寫 command 物件的一般步驟

  1. 定義一個 Java 類擴充套件 com.ibm.websphere.command.CacheableCommandImpl 類並實現相應的介面
  2. 編寫 setXXX() 方法用於設定前置條件
  3. 過載 isReadyToCallExecute() 方法檢查前置條件是否完備
  4. 過載 performExecute() 方法執行真正的邏輯
  5. 選擇是否過載 setOutputProperties() 方法只從動態快取記憶體中取回部分屬性
  6. 編寫 getXXX() 方法返回所需要的結果


圖 8. command 模式
command 模式

下面用 command 模式實現前面 parameter.jsp 的功能。首先定義如 清單 9 的介面,實現類類似於 清單 9


清單 9. command 的介面
				 
 package demo; 
 import java.util.Date; 

 public interface DateService { 
  String getUser(); 
  Date getCached(); 
  Date getUnCached(); 
 }


清單 10. DateService 的實現
				 
 package demo; 

 import java.util.Date; 

 import com.ibm.websphere.command.CacheableCommandImpl; 
 import com.ibm.websphere.command.TargetableCommand; 

 public class DateServiceCommand2 extends CacheableCommandImpl implements DateService{ 

  private static final long serialVersionUID = 1L; 

  @Override 
  public boolean isReadyToCallExecute() { 
    return user != null; 
  } 

  @Override 
  public void performExecute() throws Exception { 
    // Do nothing here 
  } 

  // Try to comment this function to see the result 
  @Override 
  public void setOutputProperties(TargetableCommand paramTargetableCommand) { 
    DateServiceCommand2 command = (DateServiceCommand2) paramTargetableCommand; 
    cached = command.cached; 
  } 
  
  @Override 
  public String toString() { 
    return String.format("", user, cached, unCached); 
  } 
  
  public Date getCached() { 
    return cached; 
  } 

  public Date getUnCached() { 
    return unCached; 
  } 

  public String getUser() { 
    return user; 
  } 

  public void setUser(String user) { 
    this.user = user; 
  } 
  
  private String user = null; 
  private Date cached = new Date(); 
  private Date unCached = new Date(); 
 }

在 cachespec.xml 中新增如 清單 11 的策略用於快取前面編寫的 command 物件。


清單 11. 快取 command 的策略
				 
  
  command 
  demo.DateServiceCommand2 
   
     
     
    0 
    300 
   
   
   
 

編寫如 清單 12 的 JSP 檔案,呼叫該 command 物件


清單 12. 使用 command 的 JSP 頁面
				 
  

   

  

Input Your Name

Current time is:

使用 Java 程式碼產生唯一標識

有時候唯一標識是無法通過簡單的配置產生,比如需要根據登入的使用者所在的地區進行快取。對於這種情況動態快取記憶體提供了使用 Java 程式碼生成唯一標識的方法。使用者需要一個 Java 類來實現 Servlet 的 com.ibm.websphere.servlet.cache.IdGenerator 介面,如果是 Web Service 則實現 com.ibm.websphere.webservices.IdGenerator 介面,command 類則是 com.ibm.websphere.command.CommandIdGenerator 介面。無論是那種方法使用者都需要實現 getId() 這個方法,返回一個 String 值表示合法的標識,如果不希望被快取則返回 null。清單 13 是 command3 類的標識生成類,清單 13 則是在 cachespec.xml 中使用該唯一標識生成類。


清單 13. command3 的 idgenerator 類
				 
 package demo; 

 import java.util.ArrayList; 

 import com.ibm.websphere.command.CacheableCommand; 
 import com.ibm.websphere.command.CommandIdGenerator; 

 public class DateServiceIdgenerator implements CommandIdGenerator { 

  @SuppressWarnings("unchecked") 
  public String getId(CacheableCommand arg0, ArrayList arg1) { 
    DateService command = (DateService) arg0; 
    if (command != null) 
      return command.getUser(); 
    else 
      return null; 
  } 

 }

清單 14 是 command3 快取策略


清單 14. 用 idgenerator 快取 command
				 
  
  command 
  demo.DateServiceCommand3 
   
    demo.DateServiceIdgenerator 
    0 
    300 
   
   
   
 

更詳細的內容可以參考附件中的 command3.jsp 。標識生成類同樣也適用於 Servlet、JSP 等的快取。

直接對動態快取程式設計

有時候使用者不希望使用這麼複雜的程式設計模型,而是希望直接將資料存入動態快取記憶體。這時可以使用 com.ibm.websphere.cache.DistributedMap 介面來操作動態快取記憶體中的一個例項,用 get() 方法獲得快取物件,用 put() 方法將物件放入快取,用 invalidate() 方法清除快取。

獲得快取示例

有兩種方法獲得 DistributedMap 的一個例項。

  • 呼叫 com.ibm.websphere.cache.DynamicCacheAccessor 類的靜態方法 getDistributedMap() 獲得 Servlet 快取例項,清單 15 演示了這種用法,但是該方法已經被宣告為 Deprecated,不建議使用
  • 清單 15 通過 JNDI 查詢獲得快取例項
清單 15清單 16 同時也演示了 DistributedMap 的一些常用方法。


清單 15. directuse1.jsp 用靜態方法獲得快取例項
				 
  

  

 



清單 16. directuse2.jsp 通過 JNDI 查詢獲得快取例項
				 
  

  

 

直接操作動態快取記憶體物件則不需要在 cachespec.xml 做任何配置。WAS 會重新載入 cachespec.xml,然後重新整理相應的快取策略,這樣使用者可以在系統執行的時候動態調整快取策略。直接操作快取不會利用該特性了,相對不是那麼方便,建議儘可能不要直接操作動態快取記憶體。

清除快取

動態快取記憶體只有一種失效模式:定時失效。這樣就帶來了一個問題,如果被快取的資料時效要求很高,如股票的價格,那麼如果快取的價格和當前價格不一致就會造成巨大的損失,要是可以及時清除快取就可以避免這類問題。清單 17 展示瞭如何清除一條快取。清除快取是比較容易的,關鍵是找到合適的清除快取的時機,在快取命中率和資料的時效性中得到一個最佳平衡。


清單 17. invalidate.jsp 演示如何清楚快取
				 
  
   

 

This page demo how to invlidate a cache item





Cache Monitor

安裝 Cache Monitor

WAS 提供了一個非常強大工具 Cache Monitor 幫助診斷和分析動態快取記憶體的使用。該工具安裝包位於 AppServer 的 installableApps 目錄下,檔名為 CacheMonitor.ear。依照下面的步驟進行安裝

  1. 登入 WAS 的管理控制檯,如 http://localhost:9060/ibm/console
  2. 輸入 WAS 管理員的使用者名稱和密碼
  3. 選擇 Applications > New Application > New Enterprise Application
  4. 在 Path to the new application 選擇 Local file system,通過“Browse...”按鈕定位到 CacheMonitor.ear 的路徑
  5. 在下一個介面選擇“Fast Path - Prompt only when additional information is required.”
  6. 在“Step 1: Select installation options”接受預設值,選擇 Next 按鈕進入下一步
  7. 在“Step 2: Map modules to servers”選擇 server1,選擇 Next 按鈕進入下一步
  8. 在“Step 3: Summary”選擇 Finish 按鈕結束安裝
  9. 在接下來的介面選擇 Save 連線儲存設定

安裝 Extend Cache Monitor

預設安裝的 Cache Monitor 提供的功能比較有限,讀者通過下載 Extend Cache Monitor 擴充套件其功能,具體步驟如下

  1. 下載 Extend Cache Monitor,WAS 7.0、6.1、6.0 對應的版本各不相同,請根據您的 WAS 的版本選擇
  2. 登入 WAS 的管理控制檯,如 http://localhost:9060/ibm/console
  3. 輸入 WAS 管理員的使用者名稱和密碼
  4. 選擇 Applications > Application Types > WebSphere enterprise applications
  5. 在如 圖 9 所示的介面,選擇 Dynamic Cache Monitor,點選 Update 按鈕
  6. 根據下載站點上的提示進行安裝


圖 9. 安裝 Extend Cache Monitor
安裝 Extend Cache Monitor

設定 Cache Monitor 的訪問控制

現在還無法使用 Cache Monitor,還需要按照下面的步驟設定訪問控制

  1. 圖 9 中選擇 Dynamic Cache Monitor,對其進行訪問控制設定
  2. 在接下來的介面中選擇 Detail Properties > Security role to user/group mapping,點選進入配置介面
  3. 選中 administrator,再選擇“Map Special Subjects”
  4. 可以參考 圖 10 選擇 Everyone 有管理員許可權,這樣匿名使用者也可以使用 Cache Monitor 了(在生產環境中不建議如此設定
  5. 選擇 OK 按鈕推出,在接下來的介面選擇 Save 儲存設定


圖 10. 設定訪問控制
設定訪問控制

使用 Cache Monitor

在使用 Cache Monitor 以前請確保該應用已經啟動。在瀏覽器位址列中輸入 http://localhost:9080/cachemonitor,會出現如下 圖 11 的介面


圖 11. Cache Monitor
Cache Monitor

然後訪問 http://localhost:9080/DynaCacheTutorial/CachedServlet 和 http://localhost:9080/DynaCacheTutorial/cached.jsp 兩個連線。接著切換到 Cache Monitor 介面,看到和 圖 12 類似的結果。點選“/DynaCacheTutorial/cached.jsp:requestType=GET”連線進入如 圖 13 所示的介面,在這裡我們看到了內容和 http://localhost:9080/DynaCacheTutorial/cached.jsp 是一致的,這個功能很有利於除錯。另一個有用的除錯功能是點選每一條被快取內容前面的 Invalidate 按鈕清除這條內容。


圖 12. Cache Monitor 顯示 Servlet 和 JSP 被快取了
Cache Monitor 顯示 Servlet 和 JSP 被快取了

圖 13. 被快取的 JSP 的內容
被快取的 JSP 的內容

Cache Monitor 還有一個重要的作用就是分析快取的效率,和所有的快取的一樣我們期望快取的命中率越接近 100% 越好,計算方法是用 圖 12 中的“Cache Hits”減掉“Cache Misses”以後的值除以“Cache Hits”,如 圖 14 中快取命中率為 99%,一個非常理想的值。“Used Entries”表示當前快取被使用的情況,當快取被填滿的時候,如果沒有設定“Disk Offload”,那麼低優先順序級的快取項就會被從動態快取記憶體中剔除出去。


圖 14. 快取命中率的統計
快取命中率的統計

cachespec.xml 的結構

在前面的例子中無論是 Servlet 還是 JSP 頁面本身沒有什麼特殊的地方,關鍵在於 cachespec.xml 檔案,它神奇的指定了快取的策略。本章將重點講解一下該檔案核心部分的結構,該檔案中每一條 cache-entry 均對應這一個 Servlet、JSP 或者 WebSphere command。下面介紹一下幾個關鍵的域

  1. class 指定需要快取的物件,合法的取值可以是 command,Servlet,webservice,JAXRPCClient,static,portlet
  2. name 指定被快取的物件的名字,不同的物件取值型別是不同的,Servlet 和 JSP 取 URI,command 物件取類的全名,portlet 取 portlet 名字
  3. property,建議 store-cookies 和 save-attributes 為 false,這樣可以減少由於序列化失敗導致在叢集中快取複製失敗的可能性
  4. cache-id 指定物件的不同呼叫生成唯一標識。這些標識是由使用者編寫的定製 Java 程式碼或每個快取記憶體條目的快取記憶體策略中定義的規則構建產生,使用者可以為一個物件指定多個標識生成規則。如果快取記憶體標識生成規則產生不了有效的標識,物件就不被快取。每個 cache-id 元素都定義快取記憶體物件的規則,並且它是由子元素元件(timeout、inactivity、priority、property、idgenerator 和 metadatagenerator)組成的。更多的細節參考資訊中心。後面會重點介紹 idgenerator。


結束語

您可以選擇直接部署編譯好的 war 包,並在瀏覽器中輸入 http://localhost:9080/DynaCacheTutorial,裡面有到各個頁面的快速連線,這樣您就可以很容易體會一下動態快取記憶體的強大。

通過本教程您學習瞭如何使用 WAS 的動態快取記憶體,感受了其強大的功能和使用的便利。如果使用得當可以讓應用系統的效能提升事半功倍。但是讀者如需要知道更多的關於動態快取記憶體的內容請參考後面提及的參考資料。

原文連結:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1008_shenhf_wascache/1008_shenhf_wascache.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-671162/,如需轉載,請註明出處,否則將追究法律責任。

相關文章