Как управлять сервером netty из 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::";
}

Пока сервер работает, он блокирует консоль и не может вводить другие команды. Разве у вас не должно быть решения? Например, как позволить ему работать одному и влиять на сервер только по команде. Например, я хотел бы отправлять сообщения со своей консоли клиентам.


person Jirka Daněk    schedule 13.06.2017    source источник


Ответы (1)


Я не могу отвечать за всю архитектуру вашего приложения, но ваш серверный объект не должен создаваться внутри вашего командного метода. Он должен быть создан до этого (или, по крайней мере, он не должен быть локальным параметром вашего метода команды, который умирает, когда ваша команда завершается) и действовать на команды, используя другой поток I предполагать.

person ebottard    schedule 14.06.2017
comment
Я начал с этого репозитория github.com/spring-projects/spring -оболочка/дерево/мастер/образцы/ - person Jirka Daněk; 14.06.2017