3

編集

loaderDeamonインターフェイスを使用して、JavaアプリをWindowsサービスとしてインストールして実行しています。これを行うために、Apacheのprocrunサービスツール(tomcatでインストールされるものと同じもの)がサービスのインストールと実行を処理します。

最近、サービスマネージャを介してサービスを実行すると、サービスは実行中であると主張しますが、応答しません。ログは書き込まれず、アプリのクライアント側は通信できません。これにより、サービスが実際に実行されていないと思います。

ここに記載されているように、// TSコマンドを使用してprocrunを介してサービスを起動しようとしました:http://commons.apache.org/daemon/procrun.htmlこれはハングし、待機してもサービスを開始しません24時間まで。procrun自体は、キャプチャしたログを生成します。完全なログは以下に含まれています。ログについていくつか質問がありますが、サービスが開始されない理由が明らかになることを願っています。

  1. まず、「Javaワーカースレッドが終了しました... status = 6で開始」はスレッドの終了を示しますか?
  2. 次に、「すべてのスレッドが終了するのを待っています」という行に到達したときに、どのスレッドがまだ実行されていますか?
  3. 第三に、サービスを開始するときに潜在的に問題があることで目立つログに他に何かありますか?

このサービスは過去に正常に実行されましたが、Javaバージョン1.7.5へのアップグレード後に最近失敗しました。効果を上げてjava1.7.3に戻したので、言及する価値はありますが、jvmの変更は無関係であると思います。

[2012-07-24 07:16:04] [debug] ( prunsrv.c:1644) Commons Daemon procrun log initialized
[2012-07-24 07:16:04] [info]  ( prunsrv.c:1648) Commons Daemon procrun (1.0.10.0 32-bit) started
[2012-07-24 07:16:04] [debug] ( prunsrv.c:559 ) Installing service...
[2012-07-24 07:16:04] [info]  ( prunsrv.c:595 ) Service CProgramFilesx86XpressfeedLoaderV5serviceLoaderEngine name XF Engine - C:\Program Files (x86)\Xpressfeed Loader V5 service\Loader
[2012-07-24 07:16:04] [debug] ( prunsrv.c:611 ) Setting service description The Xpressfeed V5 loader engine, used in headless mode to run load jobs in the background.
[2012-07-24 07:16:04] [info]  ( prunsrv.c:629 ) Service 'CProgramFilesx86XpressfeedLoaderV5serviceLoaderEngine' installed
[2012-07-24 07:16:04] [info]  ( prunsrv.c:1729) Commons Daemon procrun finished
[2012-07-24 07:16:13] [debug] ( prunsrv.c:1644) Commons Daemon procrun log initialized
[2012-07-24 07:16:13] [info]  ( prunsrv.c:1648) Commons Daemon procrun (1.0.10.0 32-bit) started
[2012-07-24 07:16:13] [info]  ( prunsrv.c:1545) Debugging 'CProgramFilesx86XpressfeedLoaderV5serviceLoaderEngine' service...
[2012-07-24 07:16:13] [debug] ( prunsrv.c:1345) Inside ServiceMain...
[2012-07-24 07:16:13] [info]  ( prunsrv.c:1089) Starting service...
[2012-07-24 07:16:13] [debug] ( javajni.c:206 ) loading jvm 'C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll'
[2012-07-24 07:16:13] [debug] ( javajni.c:660 ) Jvm Option[0] -Djava.net.preferIPv4Stack=true
[2012-07-24 07:16:13] [debug] ( javajni.c:660 ) Jvm Option[1] -Djava.class.path=.;conf;dist\XpressfeedLoader.jar;lib\antlr-2.7.6.jar;lib\apache-log4j-extras-1.1.jar;lib\asm.jar;lib\auth\IA64\sqljdbc_auth.dll;lib\auth\x64\sqljdbc_auth.dll;lib\auth\x86\sqljdbc_auth.dll;lib\c3p0-0.9.1.2.jar;lib\cglib-2.2.jar;lib\commons-codec-1.4.jar;lib\commons-collections-3.1.jar;lib\commons-daemon-1.0.3.jar;lib\commons-dbcp-1.4.jar;lib\commons-lang-2.5.jar;lib\commons-logging-1.0.4.jar;lib\commons-pool-1.5.5.jar;lib\derby-10.6.2.1.jar;lib\dom4j-1.6.1.jar;lib\edtftpj-pro.jar;lib\freemarker.jar;lib\gui\jcommon-1.0.16.jar;lib\gui\jfreechart-1.0.13.jar;lib\hibernate-c3p0-3.5.2-Final.jar;lib\hibernate-tools.jar;lib\hibernate3.jar;lib\hsqldb.jar;lib\IAClasses.zip;lib\jargs.jar;lib\javassist.jar;lib\jaxen-1.1.1.jar;lib\jta.jar;lib\jtidy-r8-20060801.jar;lib\jung\collections-generic-4.01.jar;lib\jung\colt-1.2.0.jar;lib\jung\concurrent-1.3.4.jar;lib\jung\j3d-core-1.3.1.jar;lib\jung\jung-3d-2.0.1.jar;lib\jung\jung-algorithms-2.0.1.jar;lib\jung\jung-api-2.0.1.jar;lib\jung\jung-graph-i
[2012-07-24 07:16:13] [debug] ( javajni.c:660 ) Jvm Option[2] -Xms256m
[2012-07-24 07:16:13] [debug] ( javajni.c:660 ) Jvm Option[3] -Xmx1024m
[2012-07-24 07:16:13] [debug] ( javajni.c:880 ) DLL search path set to 'C:\PROGRA~2\XPRESS~2\jre\bin'
[2012-07-24 07:16:13] [debug] ( javajni.c:897 ) Java Worker thread started com/capitaliq/loader/loaderservice/LoaderService:start
[2012-07-24 07:16:13] [debug] ( javajni.c:914 ) Java Worker thread finished com/capitaliq/loader/loaderservice/LoaderService:start with status=6
[2012-07-24 07:16:14] [debug] ( prunsrv.c:1148) Java started com/capitaliq/loader/loaderservice/LoaderService
[2012-07-24 07:16:14] [info]  ( prunsrv.c:1244) Service started in 1160 ms.
[2012-07-24 07:16:14] [debug] ( prunsrv.c:1496) Waiting for worker to finish...
[2012-07-24 07:16:14] [debug] ( prunsrv.c:1501) Worker finished.
[2012-07-24 07:16:14] [debug] ( prunsrv.c:1524) Waiting for all threads to exit

効果なしで実行した手順:

  1. デバッグを使用してコンソールでサービスを実行する
  2. java SEバージョン1.7.5、1.7.3の指定
  3. デフォルトのjvm1.6.30を使用するだけで、指定はしません
  4. 広範なグーグルワーク

どんな助けやアイデアもありがたいです!ありがとう!

4

2 に答える 2

6

最近、サービスを実行するために procrun を取得する必要がありました。--StdOutputパラメータと--StdErrorリダイレクトパラメータを に設定するという問題を理解しようと何時間も試みた後、私はそれを知りましたauto。stderr ログは で生成され--LogPath、標準のログ ファイルには表示されないスタック トレースやその他の起動時の問題が含まれます。

于 2014-02-26T18:44:39.260 に答える
3

コメントアウトして機能するまで実行するという昔ながらのデバッグ戦略を多用した後、log4j jar の最近のアップグレードで問題を絞り込みました。次のバージョンでApacheのlog4jを実行していました。

  • apache-log4j-extras-1.0.jar
  • log4j-1.2.16.jar
  • slf4j-api-1.5.8.jar
  • slf4j-log4j12-1.5.8.jar

以下にアップグレードしたため、問題が発生しました。

  • apache-log4j-extras-1.1.jar
  • log4j-1.2.17.jar
  • slf4j-api-1.6.6.jar
  • slf4j-log4j12-1.6.6.jar

元の jar ファイルに戻した後、サービスはハングすることなく初期化および実行できました。

残念ながら、procrun ログ (質問に投稿したもの以外) によって生成されたスタックまたは有用なエラーはなかったため、log4j がサービスの初期化と競合する理由を特定できません。他の誰かがたまたま知っているとしたら、私は完全に耳を傾けています-意図しない相互作用が理解されるまで、古いバージョンのjarファイルに固執する可能性が高いです.

于 2012-07-25T19:01:43.837 に答える