
我有一個在 64 位元 Debian Lenny 上運行的 GlassFish v3 應用程式伺服器。一切都運作良好,除了我想用 SNMP 監控 GF 的 JVM 實例。但是,每次我嘗試透過<jvm-options>
在domain.xml中添加以下內容來啟用它:
-Dcom.sun.management.snmp.port=10161
-Dcom.sun.management.snmp.acl.file=/path/to/snmp.acl
-Dcom.sun.management.snmp.interface=127.0.0.1
GlassFish 拒絕啟動:
$ asadmin start-domain
Waiting for DAS to start .Error starting domain: default.
The server exited prematurely with exit code 1.
Command start-domain failed.
$
jvm.log 或 server.log 中也沒有任何說明性的內容(嗯,實際上什麼也沒有)。 snmp.acl 檔案包含:
acl = {
{
communities = public
access = read-only
managers = localhost
}
}
並且是 chmod 600 (我知道這不是問題,因為如果將其設置為 600 以外的任何值,它實際上會失敗並出現有關權限的錯誤)
$ java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (build 1.6.0_0-b11)
OpenJDK 64-Bit Server VM (build 1.6.0_0-b11, mixed mode)
答案1
-Dcom.sun.management 選項有太陽JVM 的擴充。它不是 JVM 規範的一部分,因此它們在OpenJDK!
無論如何,即使使用 Sun JVM,在正在運行的叢集上部署應用程式時我也會遇到致命錯誤。也許這是 Sun 故意的,因為他們出售了 SNMP 監控的擴充。
答案2
我有同樣的問題。啟用 SNMP 後,Glassfish 將不再啟動。解決方案很簡單,描述如下:http://www.randombugs.com/java/glassfish/snmp-support-glassfish-211-cluster-support.html
只需為您的 acl 檔案添加正確的權限即可。
[randombugs@jack]# chown <application user> /etc/java-6-sun/management/snmp.acl
[randombugs@jack]# chmod o-r /etc/java-6-sun/management/snmp.acl
[randombugs@jack]# chmod g-r /etc/java-6-sun/management/snmp.acl
答案3
您可能已經檢查過,但是該連接埠上是否已經有任何東西正在偵聽?
netstat -an | grep LISTEN 將顯示這一點。