Вызов метода JMX MBean из сценария оболочки

Перечисление не было изменено для поддержки Повторяемый, потому что это - интерфейс не реальный класс (как Вектор, который был modifed для поддержки интерфейса Collections).

, Если бы Перечисление было изменено на поддержку, Повторяемую, это повредило бы код группы людей.

95
задан Dougnukem 17 November 2009 в 19:20
поделиться

4 ответа

Доступны следующие утилиты JMX командной строки:

  1. jmxterm - кажется, наиболее полнофункциональная утилита.
  2. cmdline-jmxclient - использованный в проекте WebArchive кажется очень скудным (и, похоже, не разрабатывается с 2006 года).
  3. Groovy script и JMX - предоставляет действительно мощную функциональность JMX, но требует отличной и другие настройки библиотеки.
  4. Командная строка JManage функциональность - (обратная сторона что для этого требуется запущенный JManage сервер для прокси-команд через)

Пример Groovy JMX:

import java.lang.management.*
import javax.management.ObjectName
import javax.management.remote.JMXConnectorFactory as JmxFactory
import javax.management.remote.JMXServiceURL as JmxUrl

def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi'
String beanName = "com.webwars.gameplatform.data:type=udmdataloadsystem,id=0"
def server = JmxFactory.connect(new JmxUrl(serverUrl)).MBeanServerConnection
def dataSystem = new GroovyMBean(server, beanName)

println "Connected to:\n$dataSystem\n"

println "Executing jmxForceRefresh()"
dataSystem.jmxForceRefresh();

Пример cmdline-jmxclient:

Если у вас есть

  • MBean: com.company.data:type=datasystem,id=0

With Операция называется:

  • jmxForceRefresh ()

Затем вы можете написать простой сценарий bash (при условии, что вы загрузили cmdline-jmxclient-0.10.3.jar и поместили в тот же каталог, что и ваш сценарий) :

#!/bin/bash

cmdLineJMXJar=./cmdline-jmxclient-0.10.3.jar
user=yourUser
password=yourPassword
jmxHost=localhost
port=9003

#No User and password so pass '-'
echo "Available Operations for com.company.data:type=datasystem,id=0"
java -jar ${cmdLineJMXJar} ${user}:${password} ${jmxHost}:${port} com.company.data:type=datasystem,id=0

echo "Executing XML update..."
java -jar ${cmdLineJMXJar} - ${jmxHost}:${port} com.company.data:type=datasystem,id=0 jmxForceRefresh
101
ответ дан 24 November 2019 в 05:52
поделиться

Взгляните на JManage ]. Он может выполнять методы MBean и получать / устанавливать атрибуты из командной строки .

3
ответ дан 24 November 2019 в 05:52
поделиться

Возможно, вы также захотите взглянуть на jmx4perl . Он обеспечивает доступ без Java к MBeans удаленного сервера Java EE. Однако на целевой платформе необходимо установить небольшой сервлет агента, который обеспечивает спокойный доступ к JMX через HTTP с полезной нагрузкой JSON. (Версия 0.50 добавит безагентный режим за счет реализации прокси JSR-160.)

Преимущества заключаются в быстром запуске по сравнению с запуском локальной java JVM и простоте использования. jmx4perl поставляется с полным набором модулей Perl, которые можно легко использовать в ваших собственных сценариях:

use JMX::Jmx4Perl;
use JMX::Jmx4Perl::Alias;   # Import certains aliases for MBeans

print "Memory Used: ",
      JMX::Jmx4Perl
          ->new(url => "http://localhost:8080/j4p")
          ->get_attribute(MEMORY_HEAP_USED);

Вы также можете использовать псевдоним для общих комбинаций MBean / Attribute / Operation (например, для большинства MXBean-компонентов). Для дополнительных функций (Nagios-Plugin, доступ к сложным типам атрибутов в стиле XPath и т. Д.), Пожалуйста, обратитесь к документации jmx4perl.

3
ответ дан 24 November 2019 в 05:52
поделиться

Я не уверен насчет среды, подобной bash. Вы можете попробовать несколько простых программ-оболочек на Java (с программными аргументами), которые вызывают ваши MBeans на удаленном сервере. Затем вы можете вызвать эти оболочки из сценария оболочки

. Если вы можете использовать что-то вроде Python или Perl, вас может заинтересовать JSR-262 , который позволяет вам предоставлять операции JMX через веб-службы. Планируется, что это будет включено в Java 7, но вы можете использовать релиз-кандидат эталонной реализации

0
ответ дан 24 November 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: