gpt4 book ai didi

java - 如何优雅地关闭嵌入式 jetty

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:42 25 4
gpt4 key购买 nike

我有一个应用程序在嵌入式 jetty 服务器上运行。现在我想启动/停止服务器作为服务。我使用脚本来启动服务器。

java $JAVA_OPTS -DREQ_JAVA_VERSION=$JAVA_VERSION -jar myjetty.jar

主类

Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(PORT);
server.addConnector(connector);
HandlerCollection handlers = new HandlerCollection();
NCSARequestLog requestLog = new NCSARequestLog();
requestLog.setFilename(home + "/logs/access_" + logFileDateFormat
+ ".log");
requestLog.setFilenameDateFormat(logFileDateFormat);
requestLog.setRetainDays(10);
requestLog.setAppend(true);
requestLog.setExtended(false);
requestLog.setLogCookies(false);
requestLog.setLogTimeZone(TimeZone.getDefault().getID());
RequestLogHandler requestLogHandler = new RequestLogHandler();
requestLogHandler.setRequestLog(requestLog);
handlers.addHandler(requestLogHandler);
server.setHandler(handlers);
server.start();
server.join();

这将启动服务器。 Stopping and/or Restarting an embedded Jetty instance via web call 可以用来停止服务器但是,如何从脚本中停止服务器?以及我应该做哪些更改才能在主类中关闭服务器。

最佳答案

Jetty 7.5.x 开始,您可以在代码中使用 org.eclipse.jetty.server.handler.ShutdownHandler:

Server server = new Server(8080);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]
{ someOtherHandler, new ShutdownHandler("secret_password", false, true) });
server.setHandler(handlers);
server.start();

... 这将允许您通过发出以下 http POST 请求来关闭您的 jetty :

curl -X POST http://localhost:8080/shutdown?token=secret_password

关于java - 如何优雅地关闭嵌入式 jetty ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com