Перечисление не было изменено для поддержки Повторяемый, потому что это - интерфейс не реальный класс (как Вектор, который был modifed для поддержки интерфейса Collections).
, Если бы Перечисление было изменено на поддержку, Повторяемую, это повредило бы код группы людей.
Доступны следующие утилиты JMX командной строки:
Пример 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:
Если у вас есть
With Операция называется:
Затем вы можете написать простой сценарий 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
Взгляните на JManage ]. Он может выполнять методы MBean и получать / устанавливать атрибуты из командной строки .
Возможно, вы также захотите взглянуть на 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.
Я не уверен насчет среды, подобной bash. Вы можете попробовать несколько простых программ-оболочек на Java (с программными аргументами), которые вызывают ваши MBeans на удаленном сервере. Затем вы можете вызвать эти оболочки из сценария оболочки
. Если вы можете использовать что-то вроде Python или Perl, вас может заинтересовать JSR-262 , который позволяет вам предоставлять операции JMX через веб-службы. Планируется, что это будет включено в Java 7, но вы можете использовать релиз-кандидат эталонной реализации