Запустить или остановить Jetty ServerConnector без перезапуска сервера - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Jetty Server для обработки клиентских запросов и у меня есть требование, когда мне нужно запускать или останавливать один или несколько ServerConnectors по требованию без перезапуска сервера, к которому подключены эти соединители.

Например.

ServerConnector httpConnector;
ServerConnector httpsConnector;
Server server;
server.addConnector(httpConnector);
server.addConnector(httpsConnector);
server.start()

Необходимо запустить / остановить / отменить определенный соединитель без принудительной перезагрузки сервера.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы должны будете сделать следующее ...

// TODO: Have a reference to the Connector you are going to work with

// Remove from server first.
server.removeConnector(connector);

// Stop the connector.
// NOTE: Existing connections will still live on.  
// This will only stop accepting new connections.
connector.stop(); // might take a while (waiting for acceptors to close)

// TODO: do what you want with this connector

// Eg: harshly close existing connections
connector.getConnectedEndPoints().forEach((endpoint)-> {
    endpoint.close();
});

// Re-add stopped connector if you want
// This will start connector as well
// This can fail (eg: if port is already in use)
server.addConnector(connector);
0 голосов
/ 01 февраля 2019

Вы можете вызвать stop на разъеме, чтобы остановить его, и start, чтобы запустить его снова.Чтобы получить соответствующий соединитель, есть два решения:

  • Сохранить где-нибудь созданные экземпляры соединителей и вызвать методы
  • Получить все соединители сервера, вызвав getConnectors, выполнить итерациюих, найдите тот, кого вы хотите остановить, и назовите stop или start, чтобы остановить или запустить его.
...