如何从 java 代码在 jboss cli 中启动嵌入式服务器?

How can I start an embedded server in jboss cli from java code?

我想检查一些 cli 命令在 java 中是否有效。我无法使用当前 运行 上的配置文件。此外,我根本不能使用 运行 Wildfly,因为我必须时不时地重新加载。

所以我想使用 offline-cli(带有嵌入式服务器的 cli)

我在做什么:

使用 org.jboss.as.cli.scriptsupport.CLI

连接到 CLi
CLI cli = CLI.newInstance();
cli.connect("127.0.0.1",9990,"admin","admin".toCharArray());

通过cli.cmd

启动嵌入式服务器
cli.cmd("embed-server --server-config=standalone.xml --std-out=discard");

但是除了我一直在等待这个命令完成(?)之外什么都没有发生。

我注意到的一件事是,在将我的应用程序 configuration-management.war 部署到 wildfly 之后,状态更改为 "deployed"。但是随后,服务无法启动。我没有太在意它,因为在那之后我可以看到我的应用程序的输出。或许与此有关?

2016-06-29 15:59:55,333 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 83) WFLYUT0021: Registered web context: /configuration

2016-06-29 15:59:55,364 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0016: Replaced deployment "configuration-management.war" with deployment "configuration-management.war"

2016-06-29 15:59:55,364 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report

WFLYCTL0186:   Services which failed to start:      service jboss.deployment.unit."configuration-management.war".POST_MODULE



2016-06-29 16:00:29,530 INFO  [stdout] (default task-1) this is mine!

我的 mozilla firefox 左上角只有那个死神纺车,表明我还在等待回复。

有什么提示吗?

当您启动嵌入式服务器时,它不会启动任何界面。这包括管理界面。看起来脚本支持不允许嵌入式 CLI。不过你可以file a feature request支持它。

但是您可以使用 CLI CommandContext API 来实现此目的。

final CommandContext commandContext = CommandContextFactory.getInstance().newCommandContext();
commandContext.handle("embed-server --jboss-home=/path/to/wildfly-10.0.0.Final");
commandContext.handle(":read-resource");
commandContext.handle("stop-embedded-server");

请注意某些命令,如 module add,也需要设置 jboss.home.dir 系统 属性。