我應該使用EJB- @ Singleton(javax.ejb.Singleton)進行統計或監視,還是最好將統計數據緩存在@ SessionScoped-Bean中?要清除我的問題,這裏有兩種情況:EJB- @ Singleton來管理查詢結果
方案I:
用戶開始Websession,使數據庫查詢,查看統計數據表或。這些查詢已在其會話中完成。所以10.000個用戶會做10.000個相同的數據庫查詢。
方案II:
用戶開始一個Websession和從預先初始化@單例豆重試的統計或數據表的DATAS。 @Singleton(javax.ejb.Singleton)在Server-Startup(@Startup)的開始處進行查詢。因此,10.000用戶可以從ONE緩存(@Singleton)讀取數據,而無需查詢數據庫。如果其他人創建/編輯/刪除數據,My @ Singleton-Bean將觸發其緩存數據的刷新。
所以我的問題是:
- 確實情景II鱗比方案我好?我猜是。我對嗎?
- 是否有任何其他警告或事情要考慮?
- 我知道,Stateless-Beans比@stateful或@Singleton擴展更多。我應該考慮使用@Stateless-Bean並用JPA/Hibernate Caches之類的東西來緩存查詢。
- 我應該使用@ApplicationScoped(javax.enterprise.context)而不是@Singleton(javax.ejb.Singleton)來使用代理嗎?它會更好嗎?
我正在使用Jboss AS。 – nimo23