2014-07-09 67 views
0

在命令行,輸入play run後,有我讀過關於停止播放服務器的幾種方法:如何從不同的控制檯殺死Play服務器?

  1. You can press Ctrl+ D
  2. 您可以send a SIGTERM to the process,基於斷RUNNING_PID的(生產)。
  3. 在Windows中,您可以手動殺死Java進程運行(在命令行可能與taskkill

的問題是,#1需要你在同一個控制檯上,#2需要你知道進程ID(在開發環境中沒有寫入文件),#3可以停止的不僅僅是服務器。

有沒有辦法在非生產/開發環境中殺死Play服務器從另一個控制檯(在Windows 7或Windows 8)?理想情況下,像Ctrl + D,但從不同的控制檯?

回答

0

不......你不能殺其他控制檯應用程序,但可以使用Global object維護自己的pid文件,即:

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上測試它

其他更舒適的啓動/停止dev應用程序的方式是使用ie:Intellij Idea with Play支持,當Run Configuration正確完成時,您可以使用內部的按鈕/快捷方式IDE。

最後,您可以嘗試按名稱在TaskManager中搜索進程,然後將其停止在那裏