我目前正在爲一個由許多不同的小模塊組成的應用程序編寫一些監控代碼,其中許多使用EhCache。我的目標是從應用中的每個緩存中收集關於命中率,緩存內容等的統計信息。但是,我遇到了一些實現此功能的麻煩,因爲啓用統計信息是EhCache中的一項選擇性功能。我正在尋找一種以自動方式爲所有緩存啓用統計信息的方法,以便維護不同模塊的開發人員不必始終記住啓用它們。在EhCache中,是否可以在所有緩存上啓用統計信息?
我可以在JavaDoc中找到最接近的事(但仍然無法正常工作是):
cacheManager.getDefaultCacheConfiguration().setStatisticsEnabled(true);
該方法調用能夠在默認的緩存僅而緩存的其餘部分統計數據將不受影響。
我想過的另一個想法是包裝CacheManager,以攔截創建緩存並自動選擇進入統計的調用。不幸的是,CacheManager是一個類,而不是一個接口,所以這樣的解決方案需要大量的代碼,並且會變得脆弱 - 每當EhCache發展時添加/刪除公共方法,我都必須更新我的子類。
有沒有人遇到過類似的問題?如果是這樣,你是如何解決它的?非常感謝......
這基本上就是我所做的,但問題是它隻影響當時存在的緩存 - 任何稍後添加的緩存都不會啓用統計信息。 :( – stevevls
好吧我更新了我的答案。使用偵聽器可以對動態創建的任何緩存進行相同的更改。 – Cameron