为什么在Quartz的JMX中禁用triggerJob?

时间:2012-02-03 19:06:08

标签: quartz-scheduler jmx

我已成功配置我们的应用程序以将Quartz的MBean导出到JMX中,并可以查看JConsole中的所有内容。我可以运行大多数调度程序操作。

我真正想要运行的是'triggerJob',但是它在JConsole中显示为灰色/禁用,因此我无法运行它。

我已经扫描了将JMX代码添加到Quartz的提交,但是看不到triggerJob和其他已启用的操作之间的差异。

任何人都知道发生了什么事?

编辑 - 发现了解释

另一个StackOverflow问题描述了正在发生的事情:Why are some methods on the JConsole disabled

triggerJob(和另外两个操作)取非原始参数,这些复杂的参数不能在JConsole中提供。

我不清楚MBean提供程序是否可以为JConsole(或者是simlar)提供自定义编辑器,但至少我有答案。

1 个答案:

答案 0 :(得分:1)

感谢您的解释。我使用以下Groovy代码通过JMX远程成功触发了一个作业:

def callParams = new Object[3]
callParams[0] = 'com.test.project.TestJob'
callParams[1] = 'DEFAULT_JOB_GROUP'
callParams[2] = new HashMap()

def callSignature = new String[3]
callSignature[0] = 'java.lang.String'
callSignature[1] = 'java.lang.String'
callSignature[2] = 'java.util.Map'

// server is an instance of MBeanServerConnection
server.invoke('triggerJob', callParams, callSignature)