6

Java .jar ファイルを Windows 2008 サーバーで Windows サービスとして実行するにはどうすればよいですか? C:\SomeDirectoryWindows Server 2008 ボックスのディレクトリの下にある SomeJavaFile.jar という jar ファイルがあります。私は通常、この jar をコマンドラインで次のように手動で実行するだけで、java –cp SomeJavaFile.jar com.ctg.SomeJavaFile24 時間年中無休で実行できます。

私たちの Windows Server の問題は、再起動した場合、Vistakon の処理が 24 時間年中無休で実行されるため、起動時にサービスとして自動的に開始されるようにサービスとして実行する必要があることです。私はグーグルで検索し、サービスラッパーと sc.exe コマンドを使用してサービスを作成しようとしました。

ラッパーの service.exe をC:\SomeDirectory\. 次のコマンドを使用して作成しますsc.exe SomeJavaService binPath= “C:\SomeDirectory\service.exe \”java –jar C:\SomeDirectory\SomeJavaFile.jar\”” type= own start= auto error= ignore。これにより、SomeJavaService サービスが正しく作成されますが、開始しようとすると、ローカル コンピューターのサービスが開始されてから停止したというエラーが表示されます。

一部のサービスは、他のサービスまたはプログラムによって使用されていない場合、自動的に停止します。com.ctg.SomeJavaFile を追加して、sc.exe コマンドを変更して、以前に機能していたコマンド ラインとまったく同じにする必要がありますか? したがって、変更する必要があります。この jar はバックグラウンドで実行され、常に C:/poll ディレクトリをポーリング/ping する必要があります。データが存在する場合は、データを処理し、エクスポート ファイルを別のディレクトリに送信します。

この同じ .jar ファイルを何年も正常に使用しており、変更されていませんが、Windows サービスとして実行することはできません。これは、サービス ラッパーhttp://code.google.com/p/simple-service-wrapper/を取得するために使用するサイトです。どんな助けでも大歓迎です!

4

5 に答える 5

4

「winsw」は、Glassfish Java EE 参照実装に同梱されている Windows サービス インストーラーのスタンドアロン バージョンです。

うまく機能しますが、完全に洗練された製品ではありません-私はまさにこの目的のために数年間使用してきました. Windows マシンの最近のバージョンで .NET が必要です。

https://github.com/kohsuke/winsw

于 2012-10-17T19:59:46.543 に答える
1

最善の策は、 Apache Commons DaemonのProcrunでJava アプリをラップすることだと思います。

Procrun は、Windows ユーザーが (ほとんどの場合) Java アプリケーション (Tomcat など) を Windows サービスとしてラップできるようにする一連のアプリケーションです。

このサービスは、マシンの起動時に自動的に開始するように設定でき、ユーザーがマシンにログオンしていなくても実行され続けます。

于 2012-10-17T20:04:42.797 に答える
0

を使用してコマンドラインから Java コードを開始した場合java -j some.jar、プログラムを終了するまで実行されますか、それとも自動的に停止しますか?

常に実行されている非デーモンスレッドが必要です。実行中のスレッドがなく、デーモンとしてフラグが立てられていない場合、JVM は終了します。

予算が少ない場合は、インストーラー ツールを購入してください。私はinstll4jを使用しています。そのツールを使用すると、サービス ランチャーを作成し、インストール中にインストールできます。

于 2012-10-17T19:36:31.507 に答える
0

次のソリューションは、OpenFire Connection Manager (jar ファイル) を Windows Server でサービスとして実行している私にとってはうまく機能しています。

Non-Sucking Service Manager をダウンロードしてインストールする

OpenFire チームが作成したバッチは使用しませんでした。機能しなかったためです (依存関係が見つからないというエラーが発生しました...)。次のコードでバッチ ファイルを作成します。

@ECHO OFF

cd /D "E:\connection_manager\lib"
java -jar startup.jar

cm_startup.bat接続マネージャーのbinフォルダーに保存します。

その後、NSSM でサービスを作成できます。そのため、a を開いcmd.exeて次のコマンドを実行します。

 nssm install ConnManager "E:\connection_manager\lib\cm_startup.bat"

.

ドキュメントと例

Non-Sucking Service Manager の詳細なドキュメントと例はこちら: https://nssm.cc/usage実際には、多くのオプションとして NSSM が利用可能です。

より複雑な例を次に示します。

nssm install solr "%JavaExe%" -Dsolr.solr.home="\"%CD%\solr"\"
-Djetty.home="\"%CD%"\" -Djetty.logs="\"%CD%\logs"\" -cp
"\"%CD%\lib\*.jar"\";"\"%CD%\start.jar"\" -jar "\"%CD%\start.jar"\"
于 2018-09-26T07:24:31.747 に答える