我正在使用ModelControllerClient
(以及ServerDeploymentManager
)通过Java API访问Wildfly CLI。
我想将我的更改作为CLI批处理运行,但无法为其找到API。
只需执行new ModelNode().get("operation").set("batch");
就会抛出WFLYCTL0031: No operation named 'batch' exists at address []
。
也许batch
命令就像data-source add
等其他'便捷方法'一样?我该如何执行?
答案 0 :(得分:1)
没有batch
操作,它只是一个CLI命令。 ModelControllerClient
接受DMR操作。 CLI将命令转换为DMR操作。您正在寻找的是复合操作。
org.wildfly.core:wildfly-controller-client
依赖项中有一个帮助器。以下是使用CompositeOperationBuilder
。
import org.jboss.as.controller.client.ModelControllerClient;
import org.jboss.as.controller.client.Operation;
import org.jboss.as.controller.client.helpers.Operations.CompositeOperationBuilder;
import org.jboss.dmr.ModelNode;
public class ExampleOperation {
public ModelNode executeCompositeOperation(final ModelControllerClient client, final ModelNode... ops) throws IOException {
final CompositeOperationBuilder builder = CompositeOperationBuilder.create(true);
for (ModelNode op : ops) {
builder.addStep(op);
}
final ModelNode result = client.execute(builder.build());
if (!Operations.isSuccessfulOutcome(result)) {
throw new RuntimeException(Operations.getFailureDescription(result).asString());
}
return Operations.readResult(result);
}
}
如果您还使用ServerDeploymentManager
,则会有一个newish API,其中包含更多选项。这是wildfly-maven-plugin
内部使用的内容,它现在只是一个单独的模块,因此其他人可以使用它。