如何从spring-shell控制netty服务器

How to control netty server from spring-shell

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

@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::";
}

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

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