如何使用 Java 代码使用 jboss-cli 命令将 EAR 文件部署到 wildfly-17.0.1 服务器

Posted

技术标签:

【中文标题】如何使用 Java 代码使用 jboss-cli 命令将 EAR 文件部署到 wildfly-17.0.1 服务器【英文标题】:How to deploy an EAR file to wildfly-17.0.1 server with jboss-cli command using Java code 【发布时间】:2020-02-04 21:09:27 【问题描述】:

我想使用 jboss-cli 将一个 ear 文件部署到 wildfly-17.0.1 服务器。我尝试使用 Java 代码执行命令,但总是出错,这是我的代码:

Object instance = ReflectionUtil.getClass("org.jboss.as.cli.CommandContextFactory").getMethod("getInstance").invoke(null);
ctx = instance.getClass().getMethod("newCommandContext",String.class,String.class,char[].class).invoke(instance,"localhost:"+server.getProperty(SERVER_PORT), server.getProperty(SERVER_USER),server.getProperty(SERVER_PWD).toCharArray());
m = ctx.getClass().getMethod("connectController");
m.setAccessible(true);
m.invoke(ctx);
execute(ctx, "deploy " + earPath + projectName + ".ear");

我总是收到这个错误:

"failure-description" => "WFLYCTL0158: Operation handler failed: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0"

【问题讨论】:

【参考方案1】:

core 实用程序是 wildfly-maven-plugin 的一部分,可用于以编程方式部署内容。这可能比反射更友好一些。

【讨论】:

感谢您的回答,但我需要使用反射,我需要修复此错误

以上是关于如何使用 Java 代码使用 jboss-cli 命令将 EAR 文件部署到 wildfly-17.0.1 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Dockerfile 在启动 docker 容器上运行 jboss-cli

如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列

JBoss Wildfly 在 jboss-cli 命令行模式下显示属性值

怎么加“。”作为使用 jboss-cli 的模块的资源根?

使用 jboss-cli 引用它时无法解析系统属性

只启动一次 jboss-cli