6

私は遊びを持っています!Windows サービスとして実行されるアプリケーション。このガイダンスに従って実施されます。

問題はRUNNING_PID、サーバーの再起動時にアプリケーションのルート フォルダにある が削除されず、アプリケーションを再起動できないことです。このファイルを削除して、手動でサービスを再開する必要があります。

それを解決するオプションはありますか?

4

3 に答える 3

7

YAJSW

の場合、この答えをよりよく理解してYAJSW見つけました。もちろん、あなたが提供したリンクとかなり似ていますが、開発者の注目を集めているため、代わりにコマンドを使用することをお勧めすることが多いことに注意してください(より多くのバグが修正されています)。そして、ミハイルの答えはより明確です(彼に投票してください!)diststagedist

RUNNING_PID

の場合、RUNNING_PIDpidfileを無効にするオプションを追加することを提案するプルリクエストがいくつかありました...とにかく、私が見ることができるように、それらのどれもまだ受け入れられませんでした...

実際、作成を避けられない場合は、できればアプリケーションの起動直後に、できれば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.pathappllication.conf を変更しても問題は解決しません。play はそれを使用してインスタンスが動作しているかどうかを確認します) .

于 2013-02-27T05:49:50.813 に答える
6

Play Framework 2.1 以降、プロパティを設定することで PID ファイルを無効にすることができpidfile.pathます:

ウィンドウズ:

-Dpidfile.path=NUL

ユニックス:

-Dpidfile.path=/dev/null

https://groups.google.com/forum/#!topic/play-framework/4amD9o37Ki4にあります

于 2013-06-30T14:07:32.760 に答える
1

最近、この回答に従って、YAJSW を使用してプレイ フレームワーク アプリをインストールしました。RUNNING_PID が自動的に削除され、コードを変更してファイルを削除することを心配する必要がないことに気付きました。また、サービスが他のサービスに依存している場合は、開始モードとして DELAYED_AUTO_START を設定して、サーバーの再起動後にサービスが適切に開始されるようにすることをお勧めします。

于 2014-09-29T18:49:24.473 に答える