У меня есть сервер приложений GlassFish v3, работающий на 64-битном Debian Lenny. Все работает нормально, за исключением того, что я хотел бы отслеживать экземпляр JVM GF с помощью SNMP. Однако каждый раз, когда я пытаюсь включить его, добавляя следующие <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)
-Dcom.sun.management варианты солнце расширение JVM. Это не часть спецификации JVM, поэтому они недоступны в OpenJDK !
В любом случае, даже используя Sun JVM, я получал фатальную ошибку при развертывании приложений на моем работающем кластере. Возможно, это намеренно Sun, потому что они продали расширение для мониторинга SNMP.
У меня такая же проблема. После включения 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
Вы, наверное, уже проверили, но есть ли что-нибудь, что уже слушает этот порт?
netstat -an | grep LISTEN покажет это.