13

次のコマンドを実行して、標準の実行可能jarファイルをWindowsサービスとしてインストールしました。

> prunsrv.exe //IS//"My Service" --Install="C:\path-to-prunsrv.exe" --Jvm=auto \
  --Startup=auto --StartMode=jvm --Classpath="C:\path-to-MyService.jar" \
  --StartClass=com.mydomain.MyService

次のコマンドを実行することで、コンソールモードでプログラムを正常に実行できるようになりました(Java 1.6を使用しています)。

> prunsrv.exe //TS//"My Service"

標準のWindowsサービスインターフェイスからサービスを開始しようとすると、次のエラーメッセージが表示されます。

ローカルコンピュータのMyServiceサービスが開始され、その後停止しました。一部のサービスは、他のサービスまたはプログラムで使用されていない場合、自動的に停止します。

この方法でサービスを開始しようとすると、アプリケーションのログファイルに出力がありません。Windowsのイベントログ(Windows 7 64ビット)にも出力はありません。このサービスが実行されない理由を理解するために何ができますか?

4

4 に答える 4

5

サービス名に空白を使用しないでください。

何時間にもわたってTomcatをテストして分解し、ブートストラッププロセスを複製した後、私の問題の修正は、Windowsサービスの名前に空白があるとApache Commons Daemon(Procrun)が正しく機能しないことでした。

サービス名にスペースが含まれている場合、Windowsにサービスを正しくインストールして登録しているように見えます。Windowsレジストリエントリも正しく見えます。このサービスは、デバッグ(別名TSまたはコンソール)モードでも問題なく実行されます。ただし、実行時に、Windowsによって起動される実際のサービスとして、サービス名に空白を使用してサービスがインストールされた場合は失敗します。

Procrunが失敗したときに、ある種のログ出力があればいいのにと思います。優れたロギングにより、このようなデバッグの問題を簡単に解決できます。

サービス名に複数の単語を含める必要があったため、サービスに1つの単語で名前を付け、「DisplayName」パラメーターを使用して名前を変更しました。

> prunsrv.exe //IS//MyService --Install="C:\path-to-prunsrv.exe" --Jvm=auto \
  --Startup=auto --StartMode=jvm --Classpath="C:\path-to-MyService.jar" \
  --StartClass=com.mydomain.MyService --DisplayName="My Service"
于 2012-05-25T14:14:21.323 に答える
2

「11101101b」が上で言ったことについて、いくつかの追加情報を提供したいと思いました。(これは私の最初の投稿ですので、優しくしてください!)

彼のコマンドの//IS// MyServiceの部分を次のように変更することで、サービス名にスペースを入れてサービスを正しくインストールすることができました。これも彼が行ったことだと思います。(誤って想定している場合はお詫びします。)最初の二重引用符は、サービス名の先頭ではなく、文字列の先頭にあることに注意してください。

「//IS//マイサービス」

彼の場合と同様に、サービスは正しくインストールされ、正しく見えましたが、開始されませんでした。レジストリ内のサービスのImagePath値データ設定を変更して、コマンドの// RS // My Service部分に対して同じ変更を加えることで、これを回避することができました。したがって、レジストリ値のデータ設定には、代わりに次のものが含まれていました。

「//RS//マイサービス」

すべてが問題なく機能しているようです。

于 2014-06-23T22:42:58.843 に答える
1

このサーバーは、サービスによってタスクが完了したために起動および停止するため、自動的に停止します。あなたが内部で長く走る論理を持っているなら、それは止まらないでしょう。

于 2015-04-03T13:49:27.903 に答える
-1

私は同じ問題を抱えていました...私のローカルマシンの下では、サーバー上ですべてが正常に機能しています同じ問題=>問題は、作業パスが設定されていないことでした。そのヒープが誰かを...あなたと一緒に力になりますように

ここに画像の説明を入力してください

于 2019-08-08T11:42:03.980 に答える