"WFLYJMX0012: params and description have different lengths" 以编程方式停止 Wildfly 时
"WFLYJMX0012: params and description have different lengths" when stopping Wildfly programmatically
在我的代码中,我曾经像这样以编程方式停止 Wildfly (16.0.0.Final):
[...]
Thread shutdownThread = new Thread(){
@Override
public void run() {
try {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
try {
logger.info("Stopping server...");
ObjectName objectName = new ObjectName("jboss.as:management-root=server");
mBeanServer.invoke(objectName, "shutdown", new Object[] { false, 60 }, new String[] { boolean.class.getName(), int.class.getName() });
} catch ( InstanceNotFoundException | ReflectionException | MBeanException | MalformedObjectNameException e ) {
logger.error("Failed to stop server, error msg is: " + e);
}
} catch ( Exception e ) {
logger.error(e.getMessage(), e);
}
}
};
[...]
奇怪的是,这停止工作了。我收到以下错误消息:
WFLYJMX0012: params and description have different lengths: java.lang.IllegalArgumentException:
有什么想法吗?
非常感谢,
凯
在 wildfly 16 中,他们添加了第三个参数用于正常关闭。
mBeanServer.invoke(objectName, "shutdown", new Object[] { false, 60, 60 }, new String[] { boolean.class.getName(), int.class.getName(), int.class.getName() });
虽然第三个参数被列为可选参数,但在添加它之前我们遇到了同样的错误。
该错误表明为 JMX 操作提供的实际参数与操作本身的签名不匹配。
总的来说,它可以被激励,因为你从standalone
配置切换到domain
配置。
至少,如果你使用CLI,你会发现类似的问题:在这种情况下,你需要指示要关闭的主机名作为调用的第一个参数,其余参数,是否重新启动和不同的超时,保持不变。
但在这个具体案例中,也许,我读你的问题并不清楚,你从以前的版本切换到 Wildly 版本 16.0。0.Final。
正如您在 WildFly 16.0 Model Reference 中看到的,或者如果您使用 JConsole 或其他类似工具检查由 JMX 树公开的 mbean,shutdown
操作签名如下:
正如我们还提到的,虽然这三个参数不是必需的,但 mbean 签名定义了它们,并且应提供所有参数。
在我的代码中,我曾经像这样以编程方式停止 Wildfly (16.0.0.Final):
[...]
Thread shutdownThread = new Thread(){
@Override
public void run() {
try {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
try {
logger.info("Stopping server...");
ObjectName objectName = new ObjectName("jboss.as:management-root=server");
mBeanServer.invoke(objectName, "shutdown", new Object[] { false, 60 }, new String[] { boolean.class.getName(), int.class.getName() });
} catch ( InstanceNotFoundException | ReflectionException | MBeanException | MalformedObjectNameException e ) {
logger.error("Failed to stop server, error msg is: " + e);
}
} catch ( Exception e ) {
logger.error(e.getMessage(), e);
}
}
};
[...]
奇怪的是,这停止工作了。我收到以下错误消息:
WFLYJMX0012: params and description have different lengths: java.lang.IllegalArgumentException:
有什么想法吗? 非常感谢, 凯
在 wildfly 16 中,他们添加了第三个参数用于正常关闭。
mBeanServer.invoke(objectName, "shutdown", new Object[] { false, 60, 60 }, new String[] { boolean.class.getName(), int.class.getName(), int.class.getName() });
虽然第三个参数被列为可选参数,但在添加它之前我们遇到了同样的错误。
该错误表明为 JMX 操作提供的实际参数与操作本身的签名不匹配。
总的来说,它可以被激励,因为你从standalone
配置切换到domain
配置。
至少,如果你使用CLI,你会发现类似的问题:在这种情况下,你需要指示要关闭的主机名作为调用的第一个参数,其余参数,是否重新启动和不同的超时,保持不变。
但在这个具体案例中,也许,我读你的问题并不清楚,你从以前的版本切换到 Wildly 版本 16.0。0.Final。
正如您在 WildFly 16.0 Model Reference 中看到的,或者如果您使用 JConsole 或其他类似工具检查由 JMX 树公开的 mbean,shutdown
操作签名如下:
正如我们还提到的,虽然这三个参数不是必需的,但 mbean 签名定义了它们,并且应提供所有参数。