2

実行可能な JAR として展開する必要がある Java デーモン (24 時間年中無休で実行されているシステム サービス) がありますが、ユーザー (Windows、Linux、Mac のいずれでも) が次の方法でアプリケーションを開始/停止できるようにしたいと考えています。

service myapp start

service myapp stop

(または、Windows/Mac サービスに相当するもの)。myapp明らかに、これには、 「サービス」をJavaアプリ内からの特定のメソッド呼び出しにマップするためにOSレベルで何かが必要です(おそらくLifecycleManager#start()LifecycleManager#stop()それぞれ)。

Apache Commons Daemonをこの目的に使用できると聞きました。彼らのサイトを熟読したところ、まさにこれを行っているようです。ただし、それは古いプロジェクトのようで、探していることを達成するためのドキュメントは実際にはありません。

だから私は尋ねます:commons-daemon私が必要とすることをすることができますか、それとも何か他のものが必要ですか?実行可能 JAR からクロスプラットフォーム デーモンを取得するにはどうすればよいですか? 前もって感謝します!

4

1 に答える 1

1

はい、Apache Commons Daemon は、jar を Windows 上でサービスとして (procrun を使用して)、または *NIX 上で (JSVC を使用して) デーモンとして実行できます。Windows でのみ使用したため、残りは procrun にのみ適用されます。

Procrun は適切な Windows サービスのシャットダウンをサポートしています (実行中のアプリケーションで停止メソッドを呼び出すことができます)。また、必要に応じて stdout と stderr を個別のログ ファイルにリダイレクトしたり、サービス ラッパー exe を直接実行したり (サービス名に名前を変更したと仮定)、非サービス モード コンソールを実行したりするなどの追加機能も少しあります。すぐに出力します。おそらく、procrun の「jvm モード」を使用したいと思うでしょう。これを行う方法の詳細については、ドキュメントを参照してください。

サービスを自動的に再起動できるようにする必要がある場合など、より高度な機能が必要な場合は、代わりにYAJSW (Yet Another Java Service Wrapper) を参照してください。全体的には YAJSW の方が優れている可能性が高いですが、まだ試していません。

于 2013-06-15T07:29:20.653 に答える