Назад | Перейти на главную страницу

GlassFish не запускается, если включен SNMP

У меня есть сервер приложений 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 покажет это.