如何从其他控制台杀死Play服务器?

时间:2014-07-09 04:41:50

标签: java windows command-line playframework-2.0 kill-process

在命令行中,输入play run后,我已经阅读了几种关于停止播放服务器的方法:

  1. You can press Ctrl+ D
  2. 您可以send a SIGTERM to the process,基于RUNNING_PID(正在制作中)。
  3. 在Windows中,您可以手动终止正在运行的Java进程(可能在命令行上使用taskkill
  4. 问题是#1要求你在同一个控制台上,#2要求你知道进程ID(不能写入开发环境中的文件),#3可以停止只是服务器。

    有没有办法从其他控制台(在Windows 7或Windows 8上)杀死非生产/开发环境中的Play服务器?理想情况下,像 Ctrl + D ,但来自不同的控制台?

1 个答案:

答案 0 :(得分:0)

不...你无法从其他控制台中杀死应用,但你可以维护自己的pid文件,即使用Global object

import org.apache.commons.io.FileUtils;
import play.Application;
import play.GlobalSettings;
import play.Play;

import java.io.File;
import java.io.IOException;
import java.lang.management.ManagementFactory;

public class Global extends GlobalSettings {


    @Override
    public void beforeStart(Application app) {
        if (!Play.isProd()) {
            try {
                FileUtils.writeStringToFile(new File("DEVELOPMENT_PID"), ManagementFactory.getRuntimeMXBean().getName().split("@")[0]);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

注意,这将在第一次请求后保存/更新...我没有在Windows上测试

启动/停止开发应用程序的其他更舒适的方法是使用:Intellij Idea with Play支持,当Run Configuration正确完成后,您只需使用IDE中的按钮/快捷方式即可。

最后,您可以尝试按名称在TaskManager中搜索进程,然后在那里停止