私は遊びを持っています!Windows サービスとして実行されるアプリケーション。このガイダンスに従って実施されます。
問題はRUNNING_PID
、サーバーの再起動時にアプリケーションのルート フォルダにある が削除されず、アプリケーションを再起動できないことです。このファイルを削除して、手動でサービスを再開する必要があります。
それを解決するオプションはありますか?
私は遊びを持っています!Windows サービスとして実行されるアプリケーション。このガイダンスに従って実施されます。
問題はRUNNING_PID
、サーバーの再起動時にアプリケーションのルート フォルダにある が削除されず、アプリケーションを再起動できないことです。このファイルを削除して、手動でサービスを再開する必要があります。
それを解決するオプションはありますか?
の場合、この答えをよりよく理解してYAJSW
見つけました。もちろん、あなたが提供したリンクとかなり似ていますが、開発者の注目を集めているため、代わりにコマンドを使用することをお勧めすることが多いことに注意してください(より多くのバグが修正されています)。そして、ミハイルの答えはより明確です(彼に投票してください!)dist
stage
dist
の場合、RUNNING_PID
pidfileを無効にするオプションを追加することを提案するプルリクエストがいくつかありました...とにかく、私が見ることができるように、それらのどれもまだ受け入れられませんでした...
実際、作成を避けられない場合は、できればアプリケーションの起動直後に、できればGlobals オブジェクトの onStart()
メソッドを使用して削除できます。動作中のインスタンスの現在の PID を常に把握するには、ファイルの名前を何かに変更するだけです。この名前は、起動時に Play によってチェックされません - たとえばRUNNING_PID_INFO
. このような場合、サーバーの再起動サービスにより、問題なくアプリケーションが実行されます。
import play.GlobalSettings;
import java.io.File;
public class Global extends GlobalSettings {
@Override
public void onStart(Application application) {
File pidFile = new File("RUNNING_PID");
pidFile.renameTo(new File("RUNNING_PID_INFO"));
}
@Override
public void onStop(Application application) {
File pidFile = new File("RUNNING_PID_INFO");
pidFile.delete();
}
}
(注意: pidfile.path
appllication.conf を変更しても問題は解決しません。play はそれを使用してインスタンスが動作しているかどうかを確認します) .
Play Framework 2.1 以降、プロパティを設定することで PID ファイルを無効にすることができpidfile.path
ます:
ウィンドウズ:
-Dpidfile.path=NUL
ユニックス:
-Dpidfile.path=/dev/null
https://groups.google.com/forum/#!topic/play-framework/4amD9o37Ki4にあります
最近、この回答に従って、YAJSW を使用してプレイ フレームワーク アプリをインストールしました。RUNNING_PID が自動的に削除され、コードを変更してファイルを削除することを心配する必要がないことに気付きました。また、サービスが他のサービスに依存している場合は、開始モードとして DELAYED_AUTO_START を設定して、サーバーの再起動後にサービスが適切に開始されるようにすることをお勧めします。