如何停止Jetty

17

我对Jetty和客户端/服务器架构都比较陌生。

我在Eclipse中写了一个Jetty服务器并且它也能正常工作。

但是,我该如何停止Jetty服务器呢? 我听说过stop.jar和start.jar,但我应该去哪里找到它们呢? 它们是否已经集成在jetty-all-jar中了?

2个回答

24

各种jetty-all.jar工件可用于嵌入式Jetty使用。如果您决定使用此jar,则必须管理自己的启动/关闭。

更新:2015年:从Jetty 9开始,将jetty-all.jar用作依赖项已不建议使用。这是因为从Jetty 9开始,现在不可能在单个聚合jar中满足Jetty的“全部”。有些Jetty组件无法包含在内,因为它们会导致此聚合jar出现问题。具有HTTP/2支持的Jetty的未来也使此聚合jar作为依赖项的用处更少。

典型的嵌入式模式使用

启动服务器的线程:

Server server = new Server();
// various server configuration lines
// ...

// Start server (on current thread)
server.start();

// Have current thread wait till server is done running
server.join();

负责向服务器发送关闭指令的另一个线程

// Have server stop running
server.stop();

此时原线程对server.join();的等待已完成,该线程继续运行。

标准发行版用法

如果您使用的是从download.eclipse.org/jetty/下载的标准发行版,您可以使用start.jar来启动/停止jetty本身。

一旦您解压了jetty发行版,您会在顶层目录中找到一个start.jar。这可以按以下方式使用。

启动jetty的进程:

$ java -jar start.jar STOP.PORT=28282 STOP.KEY=secret

停止Jetty的过程:

$ java -jar start.jar STOP.PORT=28282 STOP.KEY=secret --stop

谢谢你的回答。我使用了stop(),但我仍然能够发送请求,所以我认为它没有起作用。但我想,我的问题是我启动了不止一个实例。现在我有一个启动和重启方法,在终端中可以调用并且它可以工作。我将不得不在我的启动和停止方法中添加身份验证,但那是另一个问题。 - Salvadora
嘿,你知道是否有一种方法可以在不恢复已加入()线程的情况下重新启动Jetty吗? - lisak
这个答案的关键是使用STOP.KEY设置。我最初只尝试了STOP.PORT的过程,但我无法从另一个终端进程停止Jetty。一旦我找到了这个答案,我尝试添加STOP.KEY,然后--stop就可以从另一个终端进程工作了。 - Jeff M

3
如果将Jetty作为Maven插件,可以通过按下Ctrl+C终止服务器并按下Y确认终止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接