命令行JMX客户端设置值

Dar*_*der 5 java activemq-classic jmx

我使用命令行JMX客户端来查询ActiveMQ服务器.同时我希望能够动态地为服务器设置值.比如MemoryLimit.

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

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

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue MemoryLimit
Run Code Online (Sandbox Code Playgroud)

但我怎么能设置memorylimit?

我试过以下:

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue setMemoryLimit=300000`
Run Code Online (Sandbox Code Playgroud)

并失败如下.

11/18/2011 11:56:28 -0800 org.archive.jmx.Client setMemoryLimit = 300000:找不到操作setMemoryLimit.

Gra*_*ray 8

编辑

我建议删除jmxclient并切换到:

http://wiki.cyclopsgroup.org/jmxterm

它看起来得到支持和更好的记录.我怀疑它会起作用并让你访问setter - 如果存在的话.


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

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
    org.apache.activemq:BrokerName=defaultBroker,Destination=Testing,Type=Queue \
    setMemoryLimit=...
Run Code Online (Sandbox Code Playgroud)

以下是文档:

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

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

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

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
    java.lang:type=ClassLoading
Run Code Online (Sandbox Code Playgroud)

你应该看到getter和setter.以下是获取Verbose属性的方法:

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
    java.lang:type=ClassLoading Verbose
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我的版本cmdline-jmxclient不知道如何进行boolean类型操作,因此它不会显示为setter.如果它确实你应该能够:

java -jar cmdline-jmxclient-0.10.3.jar - localhost:1099 \
    java.lang:type=ClassLoading setVerbose=true
Run Code Online (Sandbox Code Playgroud)