如何从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 状态时,它会阻塞控制台并且无法输入其他命令。你不应该有解决办法吗?比如如何让运行单独使用,只通过命令影响服务器。例如,我想从我的控制台向客户端发送消息。
我无法回答您应用程序的整个架构,但您的服务器对象不应在您的命令方法中创建。
它应该在此之前创建(或者至少,它不应该是你的命令方法的局部参数,当你的命令结束时它就会消失)并且由命令执行,使用我假设不同的线程。
我尝试使用 "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 状态时,它会阻塞控制台并且无法输入其他命令。你不应该有解决办法吗?比如如何让运行单独使用,只通过命令影响服务器。例如,我想从我的控制台向客户端发送消息。
我无法回答您应用程序的整个架构,但您的服务器对象不应在您的命令方法中创建。 它应该在此之前创建(或者至少,它不应该是你的命令方法的局部参数,当你的命令结束时它就会消失)并且由命令执行,使用我假设不同的线程。