创建嵌入式服务器时通过
EmbeddedProcessFactory.createStandaloneServer
不可能启用 stdout 回显 - 命令
--std-out=echo
arg 在这里是不允许的。
现在在此服务器上调用 CLI 命令会丢弃所有输出,如果任何错误消息都没有意义,如何调试它?
好的!据我所知,即使
--std-out=echo
参数不可用,您仍然可以访问服务器日志。
import org.jboss.as.controller.client.ModelControllerClient;
import org.jboss.as.controller.client.helpers.ClientConstants;
import org.jboss.as.controller.client.helpers.Operations;
import org.jboss.as.controller.client.helpers.domain.DomainClient;
import org.jboss.as.controller.client.helpers.domain.ServerStatus;
import org.jboss.dmr.ModelNode;
import org.wildfly.core.embedded.EmbeddedProcessFactory;
import org.wildfly.core.embedded.StandaloneServer;
import java.util.concurrent.TimeUnit;
public class WildFlyEmbeddedExample {
public static void main(String[] args) throws Exception {
StandaloneServer server = EmbeddedProcessFactory.createStandaloneServer();
server.start();
try (ModelControllerClient client = server.getModelControllerClient()) {
// Example CLI command to get the server state
ModelNode op = Operations.createOperation(ClientConstants.READ_RESOURCE_OPERATION);
op.get(ClientConstants.INCLUDE_RUNTIME).set(true);
ModelNode response = client.execute(op);
System.out.println(response.toString());
// Access server logs
String serverLogs = server.getOutput();
System.out.println(serverLogs);
} finally {
server.stop();
}
}
}
但如果我没记错的话,可以通过
EmbeddedServer.getOutput()
方法访问服务器日志。所有魔法,访问 CLI 命令。 getOutput()
方法并将它们打印到控制台。
这应该有助于调试在嵌入式模式下执行 CLI 命令期间抛出的任何错误。