【发布时间】: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 有一个属性,我只是看不到设置它的正确方法。