使用JavaService添加Windows服务

时间:2012-02-03 08:11:52

标签: java service windows-services

我创建了一个Java应用程序(运行无限循环)(包含许多Java类文件),它也使用log4j.jar和`snmp4j.jar? 。为了运行应用程序,我需要提供一些输入参数,如下所示:

C:\APP>java myApp.class arg1 arg2 arg3 arg4 arg5 arg6

其中myApp.class包含主处理程序。

此应用程序在命令行执行下正常工作。但是,我想为此应用程序创建一个Windows服务,以便它在PC启动时运行。此外,如果服务因任何原因而中断,它将在Windows服务工具下重新启动。

我尝试使用 JavaService 来执行以下命令:

C:\APP>JavaService.exe -install MyService "C:\java\jdk1.6.0.29\jre\bin\server\jvm.dll" -start myApp.class -params arg1 arg2 arg3 arg4 arg5 arg6
The MyService automatic service was successfully installed

我可以看到我的MyService出现在“管理工具” - >“服务”

然而,当我开始MyService时,它开始然后停止:(

Service dialog:
The MyService on Local Computer started and then stopped. Some services stop automatically if they have no work to do, for example, the Performance Logs and Alerts service.

任何人都知道为什么?

2 个答案:

答案 0 :(得分:1)

也许您需要指定类路径?

您可以使用以下设置执行此操作:

-Djava.class.path={JDK_HOME}\lib\tools.jar;<your jar 1>;<your jar 2>

作为一个例子,我们使用脚本来安装JBoss,类似于这里讨论/显示的那个: https://community.jboss.org/wiki/JavaService

HTH

答案 1 :(得分:0)

首先,如果使用64位JVM,则必须使用64位JavaService。否则,您将在Windows事件日志中收到以下错误:

  

由于以下原因,LoadLibrary函数失败:LoadLibrary不是有效的Win32应用程序。

其次,使用JavaService的-out-err参数从java代码中记录stdout和stderr。