EhCache 關於臨時目錄的注意事項

一般 ehcache 的配置中默認的 diskStore 的路徑設置的是 java.io.tmpdir ,等於是當前系統的臨時目錄。

但是在 Tomcat  和 Resin 這兩個應用服務器上,臨時目錄是有區別的,在 Tomcat 上運行的應用通過 java.io.tmpdir 系統變量獲取到的路徑是 Tomcat 目錄下的 temp 子目錄,而 Resin 返回的是系統的臨時目錄,linux下可能就是 /tmp

在 Linux 下如果我們使用的是 root 賬號來啓動 Tomcat 和 Resin 的話,那這個問題就不存在。但是我們非常不建議用 root 來啓動 Tomcat 和 Resin,這時候我們會單獨的創建一個非特權賬號,假設該賬號名爲 www 來運行應用服務器。

我們需要將 Tomcat 和 Resin 所在的目錄授權給 www 賬號,這樣應用服務器的日誌文件才能正常的寫入,但是由於 Resin 的臨時目錄是對應系統的 /tmp 目錄,因此如果應用中使用了 ehcache 並設置了存儲路徑爲 java.io.tmpdir ,你就會發現啓動的時候報錯,提示沒有在 /tmp 目錄下創建文件的權限,這是因爲 www 賬號沒有寫 tmp 目錄的權限。

解決的辦法就是修改 ehcache 的 diskStore 配置的值爲  user.home ,將存儲文件路徑指定到用戶的主目錄下即可。

而 Tomcat 就沒有這個問題,因爲它的臨時目錄在 {tomcat}/temp ,而整個 {tomcat} 都已經授權給 www 賬號了。

發佈了260 篇原創文章 · 獲贊 10 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章