我正在使用Command-line JMX Client能够查询ActiveMQ服务器。同时我希望能够动态地向服务器设置值。例如内存限制。
是否可以通过命令行 JMX 客户端设置值,如果可以,我如何设置内存限制?
这就是我能够查询的方式。
java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue MemoryLimit
但是我如何设置内存限制?
我尝试了以下方法:
java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue setMemoryLimit=300000`
失败如下。
11/18/2011 11:56:28 -0800 org.archive.jmx.Client setMemoryLimit=300000:找不到操作 setMemoryLimit。
最佳答案
编辑
我建议放弃 jmxclient 并切换到:
它看起来得到了支持并且有更好的文档记录。我怀疑它会起作用并让您可以访问 setter - 如果它们存在。
<小时/>如果 set 方法确实存在,则以下内容应该有效:
java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue \
setMemoryLimit=...
以下是文档:
要找出哪些属性可用于设置和获取,我将使用 jconsole。如果您使用的是 Java6+ jconsole,则可以单击要从中获取信息的 bean。这应该会显示要在命令行上使用的 ObjectName
。那么如果你打开属性列表,属性的名称应该有对应的get方法。如果值是蓝色的那么应该有相应的设置方法。
例如,如果您在 jconsole 中打开 java.lang
文件夹,则应该能够单击 ClassLoading
。这表明您要使用的 ObjectName
是 java.lang:type=ClassLoading
。然后,您可以执行以下操作来列出可用的各种属性和操作:
java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
java.lang:type=ClassLoading
您应该看到 getter 和 setter。以下是获取 Verbose
属性的方法:
java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
java.lang:type=ClassLoading Verbose
出于某种原因,我的版本 cmdline-jmxclient 不知道如何执行 boolean
类型,因此它不会显示为 setter 。如果是的话,你应该能够做到:
java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
java.lang:type=ClassLoading setVerbose=true
关于java - 命令行 JMX 客户端设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187910/