【问题标题】:How do I stop Jetty如何停止码头
【发布时间】:2013-02-20 13:47:45
【问题描述】:

我是 Jetty 和客户端/服务器架构的新手。

我设法在 Eclipse 中编写了一个码头服务器,它可以工作。

但是我怎样才能停止一个码头服务器呢?我听说过 stop.jar 和 start.jar。我在哪里可以找到它?是否集成在 jetty-all-jar 中?

【问题讨论】:

    标签: jetty


    【解决方案1】:

    各种jetty-all.jar 工件可用于嵌入式码头。如果你决定使用这个 jar,你必须自己管理启动/关闭。

    更新:2015:从 Jetty 9 开始,不推荐使用 jetty-all.jar 作为依赖项。这是因为从 Jetty 9 开始,现在不可能在单个聚合 jar 中满足“所有”Jetty。 Jetty 的某些组件不能包含在内,因为它们会导致此聚合 jar 出现问题。 Jetty 的未来,加上对 HTTP/2 的支持,也使得这个聚合 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-distribution 后,您会在最顶部的目录中找到start.jar。这可以用作以下内容。

    启动jetty的进程:

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

    停止码头的进程:

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

    【讨论】:

    • 感谢您的回答。我使用了stop(),但我仍然能够发送请求,所以我认为它不起作用。但我认为,我的问题是,我开始的不止一个实例。现在我有一个启动和重启方法,我可以在终端中调用它并且它可以工作。我将不得不为我的启动和停止方法添加一个身份验证,但这是另一个问题。
    • 嘿,你知道有没有办法在不恢复joined()线程的情况下重启jetty?
    • 这个答案的一个关键点是使用 STOP.KEY 设置。我第一次尝试只使用 STOP.PORT 的过程,但我无法从另一个终端进程中阻止 Jetty。找到这个答案后,我尝试添加 STOP.KEY 然后 --stop 从另一个终端进程工作。
    【解决方案2】:

    如果 jetty 作为 maven 插件,您可以通过按 Ctrl+C 停止服务器,然后按 Y 确认终止。

    【讨论】:

      猜你喜欢
      • 2011-02-11
      • 2011-04-23
      • 1970-01-01
      • 2021-09-29
      • 2021-01-16
      • 2011-03-24
      • 2014-11-04
      • 1970-01-01
      • 2016-07-27
      相关资源
      最近更新 更多