运行 批量处理 ModelControllerClient
Running ModelControllerClient in a Batch
我正在使用 ModelControllerClient
(和 ServerDeploymentManager
)通过 Java API 访问 Wildfly CLI。
我想 运行 我的更改作为 CLI 批处理,但找不到 API 。
简单地执行 new ModelNode().get("operation").set("batch");
抛出 WFLYCTL0031: No operation named 'batch' exists at address []
.
也许 batch
命令与其他 'convenience methods' 类似 data-source add
等?我将如何执行这些?
没有 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
内部使用的,它现在只是一个单独的模块,因此其他人可以使用它。
我正在使用 ModelControllerClient
(和 ServerDeploymentManager
)通过 Java API 访问 Wildfly CLI。
我想 运行 我的更改作为 CLI 批处理,但找不到 API 。
简单地执行 new ModelNode().get("operation").set("batch");
抛出 WFLYCTL0031: No operation named 'batch' exists at address []
.
也许 batch
命令与其他 'convenience methods' 类似 data-source add
等?我将如何执行这些?
没有 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
内部使用的,它现在只是一个单独的模块,因此其他人可以使用它。