我使用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。
答案 0 :(得分:7)
修改强>
我建议删除jmxclient并切换到:
它看起来得到支持并且有更好的文档记录。我怀疑它会起作用并让你访问设置者 - 如果它们存在的话。
如果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方法。如果该值为蓝色,则应该有相应的set方法。
例如,如果您在jconsole中打开java.lang
文件夹,则应该可以单击ClassLoading
。这表明要使用的ObjectName
是java.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