Web專案使用Sigar在WebLogic伺服器部署遇到的問題
今天在WebLogic 12c伺服器上部署Web專案時,碰到了一個問題。專案中使用到了"Sigar.jar"監控Window平臺下的cpu使用率、記憶體使用率和硬碟資訊,sigar.jar包依賴"sigar-amd64-winnt.dll"和"sigar-x86-winnt.dll"兩個dll,一開始我是把"sigar.jar"以及"sigar-amd64-winnt.dll"和"sigar-x86-winnt.dll"這兩個dll直接放到了WEB-INF目錄下的lib目錄當中,然後將"sigar-amd64-winnt.dll"和"sigar-x86-winnt.dll"這兩個dll加入到classpath下,如下圖所示:
將Web應用部署到Tomcat6.x伺服器下執行
,
可以使用sigar獲取到Window平臺下的cpu使用率、記憶體使用率和硬碟資訊這些資訊的,如下圖所示:
然後將Web應用部署到WebLogic 12c伺服器上面執行,
結果發現無法使用Sigar.jar獲取到Window平臺下的cpu使用率、記憶體使用率和硬碟資訊這些資訊的,出現了執行錯誤,如下圖所示:
上網查了一下原因,原來sigar中有很多的實現是通過jni實現的,所以執行在不同的平臺上需要載入對應的本地動態連結庫,我猜想WebLogic在執行Web應用時,應該是沒有找到Sigar.jar依賴的"sigar-amd64-winnt.dll"和"sigar-x86-winnt.dll"這兩個dll,為了能夠讓WebLogic可以找到"sigar-amd64-winnt.dll"和"sigar-x86-winnt.dll",將這兩個dll放在jdk/bin下即可,是因為jvm預設會在此路徑下載入本地動態連結庫,如下圖所示:
將"sigar-amd64-winnt.dll"和"sigar-x86-winnt.dll"放到jdk的bin目錄下之後,重啟WebLogic伺服器,此時就可以正常使用sigar.jar獲取獲取到Window平臺下的cpu使用率、記憶體使用率和硬碟資訊這些資訊了,如下圖所示:
第一次遇到了這樣的問題,在此記錄一下解決辦法。如果哪位朋友有更好的解決辦法,還望相告,在此先謝過了!