运行Apache Derby作为Windows服务

时间:2012-06-03 15:25:23

标签: java windows-services derby

我在项目中使用apache derby。每次,我都必须手动启动derby服务器,即运行startnetworkserver.bat。是否可以将其安装为Windows Web服务?我还想在Windows启动列表中添加该服务。因此,每次启动系统时,它都会自动启动。所以,我不必手动启动服务器。 我使用apache tomcat作为windows服务。我想为德比做同样的事。

5 个答案:

答案 0 :(得分:6)

看看Apache Procrun。它是一个Windows可执行文件,允许您将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

或使用“我的电脑”中的“服务”视图。

哦,它是免费的! ; - )

答案 1 :(得分:2)

我遇到了同样的问题并尝试使用各种各样的工具和包装器来将Derby作为Windows服务,其中包括Derby wiki(http://wiki.apache.org/db-derby/DerbyWindowsService)中描述的所有方式。

无论如何,这些工具都不适用于我,除了Appache基金会提供的procrun工具,它在tomcat中用于将此服务器作为Windows服务器。因此,请按照以下步骤进行操作:

  1. 获取procrun(http://commons.apache.org/proper/commons-daemon/binaries.html)的两个关键文件:
    • prunsrv.exe - 用于将应用程序作为服务运行的服务应用程序。
    • prunmgr.exe - 用于监控和配置已安装服务的GUI管理器应用程序。
  2. 在Derby / bin复制这些文件(假设您有一个名为Derby的文件夹,即DERBY_HOME)。
  3. 要遵循procrun约定,请将这些文件重命名为derby.exe和derbyw.exe。如果您想使用不同的名称,则应调整附加的脚本。
  4. 要在Windows上创建服务,您必须执行下一个脚本。它被编写为在Derby文件夹的上层文件夹(..)上执行,并使用可移植版本的java 32位。

    • 注意:我已将它拆分为不同的行,但必须只在一行中执行
      

    Derby \ bin \ derby.exe // IS // DerbyService
      --DisplayName =" Derby Service"
      --Description ="这是Derby数据库服务器"
      --install ="%CD%\德比\ BIN \ derby.exe" --startup =自动
      --JavaHome" %cd%\ Java_32_portable "
      --Jvm ="的%CD%\ Java_32_portable \ BIN \客户\的jvm.dll "
      --StartMode = Java --StopMode = Java
      --StartClass = org.apache.derby.drda.NetworkServerControl --StartParams = start
      --StopClass = org.apache.derby.drda.NetworkServerControl --StopParams = shutdown
      --Classpath ="%CD%\德比\ lib中\的derby.jar;%CD%\德比\ lib中\ derbyrun.jar;%CD%\德比\ lib中\ derbynet.jar;%CD%\德比\ LIB \ derbytools.jar"
      ++ JvmOptions ="的 -Dderby.system.home =%CD%\德比; -Dderby.install.url =%CD%\德比\ lib中; -Dderby.authentication.provider = BUILTIN; -Dderby .storage.pageCacheSize = 8000; -Dderby.storage.pageSize = 20000; -Dderby.database.sqlAuthorization =假"

  5. 重要。你应该调整大胆的部分。

    • 正确设置JAVA_HOME变量和jvm.dll
    • 在由';'分隔的++ JvmOptions中设置您自己的Derby特定参数。例如,使用以下内容添加user-pasword身份验证:
      -Dderby.database.sqlAuthorization = true; -Dderby.user。" user-name" = password
  6. 最后,您可以使用

    检查服务是否正常启动
      

    net start DerbyService

  7. 建议:您可以像我一样将所有内容放在一个bat文件中,您可以在其中定义以前的JAVA_HOME或任何其他必要的变量。

答案 2 :(得分:1)

查看JavaServiceWrapper,这是一个广泛使用的,记录良好的包装器,可以使Java程序作为Windows服务运行。

答案 3 :(得分:0)

了解这是Glassfish使用的winsw。需要.NET。

答案 4 :(得分:0)

自原始问题以来已经很长时间了,无论如何我想确认我使用@Richard P提供的说明在我的Windows 64位中正确设置了Derby服务。我的脚本略有不同如下:

set JAVA_HOME=C:\java\jdk1.8.0_25
set DERBY_INSTALL=C:\tools\db-derby-10.13.1.1-bin

%DERBY_INSTALL%\bin\derby.exe //IS//DerbyService --DisplayName="My Derby Service" --Description="My Derby Database Engine Service" --Install="%DERBY_INSTALL%\bin\derby.exe" --Startup=auto --JavaHome "%JAVA_HOME%" --Jvm="%JAVA_HOME%\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="%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbyrun.jar;%DERBY_INSTALL%\lib\derbynet.jar;%DERBY_INSTALL%\lib\derbytools.jar" ++JvmOptions="-Dderby.system.home=%DERBY_INSTALL%;-Dderby.install.url=%DERBY_INSTALL%\lib;-Dderby.authentication.provider=BUILTIN;-Dderby.storage.pageCacheSize=8000;-Dderby.storage.pageSize=20000;-Dderby.database.sqlAuthorization=false"