【问题标题】:Command-line JMX Client set value命令行 JMX 客户端设置值
【发布时间】:2012-01-01 12:59:09
【问题描述】:

我正在使用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

但是如何设置内存限制?

我在下面尝试过:

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。

【问题讨论】:

  • 你确定上面有set方法吗?你能从 jconsole 做吗?如果是这样,那么您应该能够显示正在调用的方法,然后在命令行中复制方法名称。
  • 是的,我可以用 JConsole 做到这一点。这就是为什么我想通过命令行来做这件事,所以我可以自动化它。
  • 我如何在 jconsole 上看到,调用了什么方法?我看到了一个gui。不要告诉我方法调用。
  • 如果您使用的是 java6+ jconsole,您可以打开一个 bean 来显示属性和操作。如果单击 bean 的名称,您应该会看到 ObjectName 在命令行上使用。那么如果打开属性列表,属性的名称应该有对应的get方法。如果值是蓝色的,那么应该有一个相应的设置方法。
  • activemq.apache.org/jmx.html MemoryLimit 有一个属性,我只是看不到设置它的正确方法。

标签: java activemq jmx


【解决方案1】:

编辑

我建议放弃该 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方法。如果值是蓝色的,那么应该有一个相应的设置方法。

例如,如果您在 jconsole 中打开 java.lang 文件夹,您应该可以点击 ClassLoading。这表明您要使用的ObjectNamejava.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

【讨论】:

  • 对不起,忘了在我的问题中提及,我试过了,但没有用。请查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 2021-08-08
相关资源
最近更新 更多