命令行JMX客户端设置值

时间:2011-11-18 19:20:07

标签: java activemq jmx

我使用Command-line JMX Client来查询ActiveMQ服务器。同时我希望能够动态地为服务器设置值。例如 MemoryLimit

是否可以通过命令行JMX客户端设置值,如果是,我该如何设置内存限制?

这就是我能够查询的方式。

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue MemoryLimit

但是如何设置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。

1 个答案:

答案 0 :(得分:7)

修改

我建议删除jmxclient并切换到:

  

http://wiki.cyclopsgroup.org/jmxterm

它看起来得到支持并且有更好的文档记录。我怀疑它会起作用并让你访问设置者 - 如果它们存在的话。


如果set方法确实存在,则以下内容应该有效:

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
    org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue \
    setMemoryLimit=...

以下是文档:

  

http://crawler.archive.org/cmdline-jmxclient/

要找出可用于设置和获取的属性,我将使用jconsole。如果您使用的是Java6 + jconsole,则可以在字段中单击要从中获取信息的bean。这应该显示在命令行上使用的ObjectName。然后,如果打开属性列表,则属性的名称应具有相应的get方法。如果该值为蓝色,则应该有相应的set方法。

例如,如果您在jconsole中打开java.lang文件夹,则应该可以单击ClassLoading。这表明要使用的ObjectNamejava.lang:type=ClassLoading。然后,您可以执行以下操作以列出可用的各种属性和操作:

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
    java.lang:type=ClassLoading

你应该看到吸气剂和二传手。以下是获取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