Apache Derby サーバーをサービスとして実行する必要があるため、Derby はそれがインストールされているマシンと一緒に開始されます。
このようなサービスを作成するために、私の調査に基づいて 3 つのソリューションを試しましたが、どれも実行可能ではないか、エラーを生成しませんでした。
Java Service Wrapper を使用してください。無料で 30 日間の試用版しか提供されていないため、これは実行できません。
http://www.vogella.com/tutorials/ApacheDerby/article.htmlで説明されているように、Windows Server Manager (SrvMgr.exe) を使用してサービスを作成します。Windows レジストリに表示されるサービスを作成し、[サービス] パネルから開始/停止でき、何かが
http://localhost:1527
Derby サーバーのデフォルト アドレスを使用しているため、これは機能しているようです。ただし、Eclipse (luna) またはコンソール経由でデータベースに接続しようとすると、エラーが発生します。Could not connect to DerbyPersistenceDeploy. Error creating SQL Model Connection connection to DerbyPersistenceDeploy. (Error: DERBY SQL error: ERRORCODE: 40000, SQLSTATE: XJ041, SQLERRMC: Failed to create database 'persistence', see the next exception for details.::SQLSTATE: XBM0J) DERBY SQL error: ERRORCODE: 40000, SQLSTATE: XJ041, SQLERRMC: Failed to create database 'persistence', see the next exception for details.::SQLSTATE: XBM0J Error creating JDBC Connection connection to DerbyPersistenceDeploy. (Error: DERBY SQL error: ERRORCODE: 40000, SQLSTATE: XJ041, SQLERRMC: Failed to create database 'persistence', see the next exception for details.::SQLSTATE: XBM0J) DERBY SQL error: ERRORCODE: 40000, SQLSTATE: XJ041, SQLERRMC: Failed to create database 'persistence', see the next exception for details.::SQLSTATE: XBM0J
以下は、サービスのレジストリ エントリのイメージです。
私が関連付けた最後のアプローチは、Apache procrun ( http://commons.apache.org/proper/commons-daemon/procrun.html ) を使用することでした。私はこのチュートリアル ( http://joerglenhard.wordpress.com/2012/05/29/build-windows-service-from-Java-application-with-procrun/ ) に取り組み、サンプル サービスを実行することができました。 . ただし、チュートリアルに投稿されたスクリプトを適応させようとしたときに、(ログ ファイルから) 次のエラーが発生しました。
[2014-07-21 16:52:20] [error] [ 3708] Method 'static void start(String[])' not found in Class org/apache/derby/drda/NetworkServerControl [2014-07-21 16:52:20] [error] [ 6228] Failed to start Java [2014-07-21 16:52:20] [error] [ 6228] ServiceStart returned 4 [2014-07-21 16:52:20] [error] [ 6228] Commons Daemon procrun failed with exit value: 3 (Failed to run service as console application)
以下は、Web サービスを作成するためのスクリプトです。
set SERVICE_NAME=DerbyPersistenceService set PR_INSTALL=D:\Program-Files\commons-daemon-1.0.15-bin-windows\prunsrv.exe REM Service log configuration set PR_LOGPREFIX=%SERVICE_NAME% set PR_LOGPATH=D:\04_server\derby\DerbyServiceScript\logs set PR_STDOUTPUT=D:\04_server\derby\DerbyServiceScript\logs\stdout.txt set PR_STDERROR=D:\04_server\derby\DerbyServiceScript\logs\stderr.txt set PR_LOGLEVEL=Error REM Path to java installation set PR_JVM=C:\Program Files (x86)\Java\jdk1.7.0_65\jre\bin\client\jvm.dll set PR_CLASSPATH=%DERBY_HOME%/lib/derby.jar; %DERBY_HOME%/lib/derbynet.jar; %DERBY_HOME%/lib/derbyclient.jar; %DERBY_HOME%/lib/derbytools.jar REM Startup configuration set PR_STARTUP=auto set PR_STARTMODE=jvm set PR_STARTCLASS=org.apache.derby.drda.NetworkServerControl set PR_STARTPARAM=start set PR_STARTMETHOD=main REM Shutdown configuration set PR_STOPMODE=jvm set PR_STOPCLASS=org.apache.derby.drda.NetworkServerControl set PR_STOPPARAM=shutdown set PR_STOPMETHOD=main REM JVM configuration set PR_JVMMS=256 set PR_JVMMX=1024 set PR_JVMSS=4000 set PR_JVMOPTIONS=-Duser.language=US;-Duser.region=en REM Install service D:\Program-Files\commons-daemon-1.0.15-bin-windows\prunsrv.exe //IS//%SERVICE_NAME%
このエラーは、
Startup
-Shutdown-Configurations
が正しい方法で構成されていないという事実から生じていると思いますが、それらがどのように見えるべきかわかりません。
誰かがアプローチ2.または3の解決策を知っていれば、とても感謝しています。
ご挨拶
[edit1:] Bryan Pendleton が提案したように、Procrun スクリプトを編集しました。
[edit2:] サービスから新しいエラー メッセージが表示されます。
stderr.txt
:
2014-07-23 16:41:14 Commons Daemon procrun stderr initialized
stdout.txt
:
2014-07-23 16:41:14 Commons Daemon procrun stdout initialized
Wed Jul 23 16:41:14 CEST 2014 : No command given.
Usage: NetworkServerControl <commands>
Commands:
start [-h <host>] [-p <port number>] [-noSecurityManager] [-ssl <ssl mode>]
shutdown [-h <host>][-p <port number>] [-ssl <ssl mode>] [-user <username>] [-password <password>]
ping [-h <host>][-p <port number>] [-ssl <ssl mode>]
sysinfo [-h <host>][-p <port number>] [-ssl <ssl mode>]
runtimeinfo [-h <host>][-p <port number>] [-ssl <ssl mode>]
logconnections { on|off } [-h <host>][-p <port number>] [-ssl <ssl mode>]
maxthreads <max>[-h <host>][-p <port number>] [-ssl <ssl mode>]
timeslice <milliseconds>[-h <host>][-p <port number>] [-ssl <ssl mode>]
trace { on|off } [-s <session id>][-h <host>][-p <port number>] [-ssl <ssl mode>]
tracedirectory <trace directory>[-h <host>][-p <port number>] [-ssl <ssl mode>]
DerbyPersistenceService.2014-07-23.log
空です。
メソッドの引数に何か問題があると思います。
[edit3:]スクリプトを変更して、実用的なソリューションにしました。これを手伝ってくれた Bryan Pendleton に感謝します。
set SERVICE_NAME=DerbyPersistenceService
set PR_INSTALL=D:\Program-Files\commons-daemon-1.0.15-bin-windows\prunsrv.exe
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=D:\04_server\derby\DerbyServiceScript\logs
set PR_STDOUTPUT=D:\04_server\derby\DerbyServiceScript\logs\stdout.txt
set PR_STDERROR=D:\04_server\derby\DerbyServiceScript\logs\stderr.txt
set PR_LOGLEVEL=Error
REM Path to java installation
set PR_JVM=C:\Program Files (x86)\Java\jdk1.7.0_65\jre\bin\client\jvm.dll
set PR_CLASSPATH=%DERBY_HOME%/lib/derby.jar;
%DERBY_HOME%/lib/derbynet.jar;
%DERBY_HOME%/lib/derbyclient.jar;
%DERBY_HOME%/lib/derbytools.jar
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=org.apache.derby.drda.NetworkServerControl
set PR_STARTPARAMS=start
set PR_STARTMETHOD=main
REM Shutdown configuration
set PR_STOPMODE=jvm
set PR_STOPCLASS=org.apache.derby.drda.NetworkServerControl
set PR_STOPPARAMS=shutdown
set PR_STOPMETHOD=main
REM JVM configuration
set PR_JVMMS=256
set PR_JVMMX=1024
set PR_JVMSS=4000
set PR_JVMOPTIONS=-Duser.language=US;-Duser.region=en
REM Install service
D:\Program-Files\commons-daemon-1.0.15-bin-windows\prunsrv.exe //IS//%SERVICE_NAME%