用Java保持连接打开

时间:2018-01-23 16:37:21

标签: java

我的代码创建了与docker的连接,发送命令并读取输出。

问题是连接死了,当我再次运行时,我基本上创建了另一个连接,发送数据,读取数据等......

但我需要保持此连接打开,这样我就可以使用buffers out, err发送命令并读取结果,而不会丢失命令流。知道怎么做吗?

public static String getDockerConsole(String containerName, String input) {
    String[] cmd = new String[]{
            "/bin/sh",
            "-c",
            input
    };
    DockerClient dockerClient = dockerClient();
    Container container = getContainer(containerName);
    ExecCreateCmdResponse execCreateCmdResponse = dockerClient.execCreateCmd(container.getId()).withAttachStdout(true).withTty(true).withAttachStderr(true).withCmd(cmd).withUser("root").exec();
    ByteArrayOutputStream  out = new ByteArrayOutputStream();
    ByteArrayOutputStream err = new ByteArrayOutputStream();

    try {
        dockerClient.execStartCmd(container.getId()).withExecId(execCreateCmdResponse.getId()).withDetach(false).withTty(true).exec(new ExecStartResultCallback(out, err)).awaitCompletion();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return out.toString() + err.toString();
}

编辑:当我发送命令执行文件时,它会在debugg部分显示该文件并挂起awaitCompletion()。我想访问此连接,以便我可以在外部显示数据

0 个答案:

没有答案