3

プロジェクトでApache derbyを使用しています。毎回、derby のサーバーを手動で起動する必要があります。つまり、 startnetworkserver.bat を実行します。Windows Web サービスとしてインストールすることは可能ですか? また、Windowsのスタートアップリストにサービスを追加したいと思います。システムを起動するたびに自動的に起動するように、サーバーを手動で起動する必要はありません。Windows サービスとして apache tomcat を使用しています。ダービーもやりたい。

4

5 に答える 5

6

Apache Procrunを見てください。Java プログラムを Windows サービスとしてインストール/アンインストールできる Windows 実行可能ファイルです。

サービスのインストールは次のようになります (プロジェクト サイトから)。

prunsrv //IS//TestService --DisplayName="Test Service" \
    --Install=prunsrv.exe --Jvm=auto --StartMode=jvm --StopMode=jvm \
    --StartClass=org.apache.SomeStartClass --StartParams=arg1;arg2;arg3 \
    --StopClass=org.apache.SomeStopClass --StopParams=arg1#arg2

その後、次を使用してサービスを開始/停止します。

net start TestService
net stop TestService

またはマイ コンピュータのサービス ビューを使用します。

ああ、そしてそれは無料です!;-)

于 2012-06-03T15:42:27.560 に答える
2

私は同じ問題を抱えていて、Derby wiki ( http://wiki.apache.org/db-derby/DerbyWindowsService )に示されているすべての方法の中で、Derby を Windows サービスとして取得するためにさまざまなツールとラッパーを試してみました。 .

とにかく、TomcatでこのサーバーをWindowsサーバーとして取得するために使用される、Appache Foundationが提供するprocrunツールを除いて、これらのツールはどれも機能しませんでした。したがって、次の手順に従います。

  1. procrun の 2 つの主要なファイルを取得します ( http://commons.apache.org/proper/commons-daemon/binaries.html )。
    • prunsrv.exe - アプリケーションをサービスとして実行するためのサービス アプリケーション。
    • prunmgr.exe - インストールされたサービスの監視と構成に使用される GUI マネージャー アプリケーション。
  2. これらのファイルを Derby/bin にコピーします (DERBY_HOME に Derby という名前のフォルダーがあると仮定します)。
  3. procrun 規則に従って、これらのファイルの名前を derby.exe および derbyw.exe に変更します。別の名前を使用したい場合は可能ですが、添付のスクリプトを変更する必要があります。
  4. Windows でサービスを作成するには、次のスクリプトを実行する必要があります。Derby フォルダーの上位フォルダー (..) で実行し、Java 32 ビットのポータブル バージョンを使用して実行するように記述されています。

    • 注:別の行に分割しましたが、1行で実行する必要があります

    Derby\bin\derby.exe //IS//DerbyService
    --DisplayName="Derby サービス"
    --Description="これは Derby データベース サーバーです"
    --Install="%cd%\Derby\bin\derby.exe" --Startup=auto
    --JavaHome " %cd%\Java_32_portable "
    --Jvm=" %cd%\Java_32_portable\bin\client\jvm.dll "
    --StartMode=Java --StopMode=Java
    --StartClass=org. apache.derby.drda.NetworkServerControl --StartParams=start
    --StopClass=org.apache.derby.drda.NetworkServerControl --StopParams=shutdown
    --Classpath="%cd%\Derby\lib\derby.jar;%cd% \Derby\lib\derbyrun.jar;%cd%\Derby\lib\derbynet.jar;%cd%\Derby\lib\derbytools.jar"
    ++JvmOptions="-Dderby.system.home=%cd%\Derby;-Dderby.install.url=%cd%\Derby\lib;-Dderby.authentication.provider=BUILTIN;-Dderby.storage.pageCacheSize=8000;-Dderby.storage .pageSize=20000;-Dderby.database.sqlAuthorization=false "

  5. 重要。太字の部分を適応させる必要があります。

    • JAVA_HOME 変数と jvm.dll を適切に設定します
    • 「;」で区切られた ++JvmOptions 内に独自の Derby 固有のパラメーターを設定します。たとえば、次のようにユーザーパスワード認証を追加します:
      -Dderby.database.sqlAuthorization=true;-Dderby.user."user-name"=password
  6. 最後に、サービスが正常に開始されることを確認できます

    net start DerbyService

アドバイス:私が持っているように、すべてをバッチファイルにまとめて、JAVA_HOMEまたはその他の必要な変数を事前に定義できます。

于 2014-09-05T10:10:56.327 に答える
1

Java プログラムを Windows サービスとして実行するために広く使用され、十分に文書化されているラッパーであるJavaServiceWrapperを確認してください。

于 2012-06-03T16:10:18.320 に答える
0

Glassfishが使用しているものであるwinswを調べてください。.NET が必要です。

于 2012-06-03T15:30:45.663 に答える