在不重新启动服务器的情况下启动或停止Jetty ServerConnector

时间:2019-01-31 22:07:50

标签: java server jetty embedded-jetty

我使用码头服务器来处理客户端请求,并且有一个要求,我需要根据需要启动或停止一个或几个ServerConnectors,而无需重新启动连接这些连接器的服务器。

例如。

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

需要启动/停止/取消特定的连接器,而不必强制服务器重新启动。

2 个答案:

答案 0 :(得分:1)

您将必须执行以下操作...

// 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);

答案 1 :(得分:0)

您可以调用连接器上的stop使其停止,并调用start重新启动它。要获得相关的连接器,有两种解决方案:

  • 将创建的连接器实例保存在某个地方并调用方法
  • 通过调用getConnectors来获取服务器的所有连接器,对其进行迭代,找到要停止的连接器,然后在其上调用stopstart来停止或启动它。< / li>