我們正在運行無狀態會話Bean以從各個位置檢索一些數據。無狀態會話bean結果緩存?
實現此SLSB緩存的最佳方式是什麼?
使用攔截器?使用JBossCache?
我們使用的是JBoss 5.0.1。
我們正在運行無狀態會話Bean以從各個位置檢索一些數據。無狀態會話bean結果緩存?
實現此SLSB緩存的最佳方式是什麼?
使用攔截器?使用JBossCache?
我們使用的是JBoss 5.0.1。
從技術上講,您可以在無狀態會話bean中保留狀態,只是狀態可以在調用之間由容器清除。因此,您不應該將緩存本身保留在bean中,因爲它可能會消失。
由於您已經使用了JBoss Appserver,因此JBossCache在這裏看起來像是個明顯的贏家。您可以使用jboss服務描述符配置JBossCache實例,然後您的EJB可以從JMX/JNDI中查找緩存實例。它全部包含在JBossAS中,所以不需要額外的依賴關係。
如果您感興趣的話,使用JBossCache還可以爲您提供跨羣集分佈的緩存額外獎勵。
無用會話bean本身無法在調用之間保存數據,因爲名稱說它是無狀態的。然而。你可以創建一個有狀態的會話bean來保存你的緩存,並將這個bean傳遞給你的無狀態bean方法。
void someMethod(StateFulBean sfb){
Cache cahce = sfb.getCache();
...
}
當使用EBJ 3.1,您還可以使用Singleton註解並注入高速緩存作爲一個單身到您的無狀態會話bean。
是否有任何現有的攔截器來實現這一點? (例如,將使用方法參數作爲緩存鍵的攔截器......) 我不希望將業務代碼與緩存代碼混合在一起。 – jruillier 2009-12-16 09:51:50
我不知道這種現成的東西,但JBoss EJB攔截器很容易編寫,所以你可以推出自己的。 – skaffman 2009-12-16 09:55:56