Как активировать JMX на удаленном сервере Glassfish для доступа через jconsole? - PullRequest
4 голосов
/ 05 августа 2009

Я хотел бы контролировать удаленный сервер Glassfish. Я включил JMX-соединение в domain.xml:

<jmx-connector accept-all="true" address="0.0.0.0" auth-realm-name="admin-realm" enabled="true" name="system" port="8686" protocol="rmi_jrmp" security-enabled="false">

Но это не помогло. Я все еще не могу подключиться к серверу с помощью JConsole. Тогда я нашел решение - мне нужно указать свойства JVM в domain.xml, чтобы открыть порт 8686 для удаленного подключения. Поэтому я добавил эти строки в java-config раздел:

<jvm-options>-Dcom.sun.management.jmxremote</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.port=8686</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.local.only=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.authenticate=false</jvm-options>

Но теперь, когда я запускаю сервер, я получаю следующие ошибки:

Не удалось загрузить Logmanager "Com.sun.enterprise.server.logging.ServerLogManager" java.lang.ClassNotFoundException: com.sun.enterprise.server.logging.ServerLogManager на java.net.URLClassLoader $ 1.run (URLClassLoader.java:200) at java.security.AccessController.doPrivileged (Native Метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:188) в java.lang.ClassLoader.loadClass (ClassLoader.java:307) at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) в java.lang.ClassLoader.loadClass (ClassLoader.java:252) в java.util.logging.LogManager $ 1.run (LogManager.java:166) at java.security.AccessController.doPrivileged (Native Метод) в java.util.logging.LogManager. (LogManager.java:156) в java.util.logging.Logger.getLogger (Logger.java:273) at sun.management.snmp.util.MibLogger. (MibLogger.java:57) at sun.management.snmp.util.MibLogger. (MibLogger.java:42) в sun.management.jmxremote.ConnectorBootstrap. (ConnectorBootstrap.java:760) at sun.management.Agent.startAgent (Agent.java:127) at sun.management.Agent.startAgent (Agent.java:239) javax.management.JMRuntimeException: Не удалось загрузить MBeanServerBuilder учебный класс com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder: java.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder в javax.management.MBeanServerFactory.checkMBeanServerBuilder (MBeanServerFactory.java:480) в javax.management.MBeanServerFactory.getNewMBeanServerBuilder (MBeanServerFactory.java:511) в javax.management.MBeanServerFactory.newMBeanServer (MBeanServerFactory.java:298) в javax.management.MBeanServerFactory.createMBeanServer (MBeanServerFactory.java:213) в javax.management.MBeanServerFactory.createMBeanServer (MBeanServerFactory.java:174) at sun.management.ManagementFactory.createPlatformMBeanServer (ManagementFactory.java:302) в java.lang.management.ManagementFactory.getPlatformMBeanServer (ManagementFactory.java:504) в sun.management.jmxremote.ConnectorBootstrap.initialize (ConnectorBootstrap.java:392) at sun.management.Agent.startAgent (Agent.java:127) at sun.management.Agent.startAgent (Agent.java:239) Вызванный: java.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder на java.net.URLClassLoader $ 1.run (URLClassLoader.java:200) at java.security.AccessController.doPrivileged (Native Метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:188) в java.lang.ClassLoader.loadClass (ClassLoader.java:307) at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) в java.lang.ClassLoader.loadClass (ClassLoader.java:252) в javax.management.MBeanServerFactory.loadBuilderClass (MBeanServerFactory.java:423) в javax.management.MBeanServerFactory.checkMBeanServerBuilder (MBeanServerFactory.java:465) ... еще 9 Исключение, выданное агентом: javax.management.JMRuntimeException: Не удалось загрузить MBeanServerBuilder учебный класс com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder: java.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder

Как я могу решить проблему?

Заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 18 ноября 2011

Все еще мистическое поведение, но с этими 4 настройками вы можете подключиться к JVM, работающей под управлением Glassfish (добавьте в domain.xml в консоли администратора, требуется перезагрузка)

-Djava.rmi.server.hostname=yourhost
-Dcom.sun.management.jmxremote.port=8686
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

Осторожно ! Это небезопасно, так как теперь любой может подключить к нему jconsole!

IMO, это не способ Glassfish, в котором используется разъем JMX.

(Выше приведены работы в GF 3.1)

3 голосов
/ 31 августа 2009

Шаги для решения проблемы: 1. использовать настройки по умолчанию 2. добавьте -Djava.rmi.server.hostname = в параметры JVM экземпляра GlassFish.

2 голосов
/ 18 марта 2010

В итоге я установил следующую опцию, чтобы JMX с Glassfish был безопасен для брандмауэра:

<jvm-options>-Dcom.sun.aas.jconsole.server.cbport=XXXX</jvm-options>

Где XXXX - номер порта, который вы используете в брандмауэре вместе с настроенным номером порта JMX на сервере приложений (обычно 8686).

Подробнее в этом блоге . Обратите внимание, что для этой функции требуется более новая версия Glassfish. Я успешно использовал его с Glassfish 2.1.1.

0 голосов
/ 21 марта 2015

Если ваше приложение запускается на сервере приложений Glassfish, просто выполните следующую команду asadmin, вам нужно будет перезапустить все работающие серверы, чтобы изменения вступили в силу.

. / Asadmin enable-secure-admin

Существуют дополнительные конфигурации сервера Glassfish для дальнейшего обеспечения безопасности, подробнее см. Удаленное подключение к Glassfish через JMX .

Вам необходимо выполнить шаги для параметров JVM, это общие инструкции для приложений Java. Для приложения Java, которое работает с сервером приложений Glassfish, просто используйте команду asadm. Это сэкономило мне много времени!

** Еще одно замечание: только с настройками, использующими параметры JVM, Glassfish не сможет запуститься с вышеуказанными исключениями времени выполнения. ** Я использую GF3.1.2 и выше и Java 7.

0 голосов
/ 06 августа 2009

Не правда ли Выпуск GlassFish 1409 ?

...