【发布时间】:2016-01-12 21:59:26
【问题描述】:
我有一个嵌入式码头项目,它构建了一个启动我们的 web 应用程序的 .jar 文件。
public static void main(String[] args){
final Server server = new Server(threadPool);
//Do config/setup code for servlets/database/contexts/connectors/etc
server.start();
server.dumpStdErr();
server.join();
}
因此,虽然通过调用 java -jar MyApp.jar 来启动我们的服务器非常有效,但我不知道如何停止它。当我想通过我们的构建服务器停止服务器时,这尤其令人讨厌。
当我们使用 Jetty 服务并部署 .war 文件时,我们可以这样做:
- 通过 Jenkins 构建最新的 .war 文件
- 通过 shell 停止 Jetty 服务 (sudo service jetty stop)
- 用新的 .war 文件覆盖 /opt/jetty/webapp 中的旧 .war 文件
- 通过 shell 启动 Jetty 服务(sudo service jetty start)
我目前有两个想法:
- 如果您指定了秘密获取参数,请创建一个调用 server.stop() 的 servlet。在 Jekins 的 shell 上使用 curl 来访问这个 servlet。
- 使用 Apache-Commons 守护程序包装器之类的东西将我的应用程序变成服务。
我是否缺少一些明显的机制来停止服务器?
【问题讨论】:
-
向进程发送终止是否有效?
标签: java service jenkins jetty embedded-jetty