0

我尝试使用“spring shell”创建一个控制台,我想运行我自己的 netty socket 服务器命令。我有一个命令:

@CliCommand(value = "server", help = "Start socket server")
public String server(
        @CliOption(key = {"port", "p"}, mandatory = true, help = "Port number [49152-65535]") final String port,
        @CliOption(key = {"maxclients", "mc"}, mandatory = false, help = "Max clients", unspecifiedDefaultValue = "50") final String maxClients
)
{
    NettyServer nettyServer = new NettyServer(Integer.parseInt(port), Integer.parseInt(maxClients));
    nettyServer.run();

    return "::CliCommand return::";
}

当服务器运行时,它会阻塞控制台并且不能输入其他命令。你不应该有解决方案吗?比如如何让它单独运行,只通过命令影响服务器。例如,我想从我的控制台向客户端发送消息。

4

1 回答 1

0

我无法回答您的应用程序的整个架构,但您的服务器对象不应该在您的命令方法中创建。它应该在此之前创建(或者至少,它不应该是命令方法的本地参数,当你的命令结束时会死掉)并由 commands使用,我假设使用不同的线程。

于 2017-06-14T13:15:51.023 回答