實際的 Web Application 中,緩存 (cache) 是不可或缺的事。 JBoss Seam 當然也提供了多種緩存服務。在這系列的文中我會講講最高層,最易應用和最易理解的 PojoCache 以及 Page Fragment Cache 。
在使用緩存之前,我們首先建立一個 Hello World 程式作為藍本 (源碼 svn)。
這會讓 seam 在顯示 index.xhtml 前先執行 complexWork.work method。
@Stateful 代表這是個 SFSB。@Name 指定了它在 seam 中的名字,我們以後可以用 complexWork 在 seam 中稱呼它。work() 是我們的主要業務邏輯 ,它會等待一秒以模擬一些繁重的工作,再把 message 設定為 “Hello, World”。@Out annotation 會讓 seam 知道我們想在頁面上看到 message。
沒有甚麼值得一談的,只是把 message 顯示出來:
留意 console ,每次 refresh 網頁 SFSB 也在重新工作:
接著我們要為 SFSB 加入緩存 。
PojoCache 是 seam 內置的 Java 物件緩存組件。PojoCache 支援 JTA transaction manager,isolation level,replication,overflowing, eviction policy 等功能,要完整設定並不簡單。但要讓它可以供 seam 應用則不難,首先要在 resources 下加入設定檔 treecache.xml 。(源碼 svn)
這個設定檔中值得留意的是 Eviction Policy 。 Eviction Policy 是指 PojoCache 移除 cache 中的規則。現在 PojoCache 只支援 LRU (Least Recently Used) policy。現在的設定下,在 “/message” region 中最多可存放 100 個物件,每個物件最多可以保留 10 秒。詳細的設定可以參考 JBoss TreeCache Manual 中的 LRU eviction policy。
接著在需要 PojoCache 的 component 中指定 Injection :
留意改動後的 work() 方法,使用 pojoCache 就如一般的 Map 一樣簡單。

使用 PojoCache 後再到 index.seam,會發現只有第一次啟動網頁時需要較長時間。
在之後十秒內再 refresh 網頁幾乎不用任何等待,這是由於我們設定了緩存有 10 秒的壽命。
在此我們己經成功設定 seam 使用 PojoCache 了!第二部份將會討論使用 Page Fragment Cache 以及手動移除 Cache 的方法。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13270562/viewspace-244079/ ,如需转载,请注明出处,否则将追究法律责任。