如何在Windows 2008服务器上将Java .jar文件作为Windows服务运行?我有一个名为SomeJavaFile.jar的jar文件,位于Windows Server 2008框的C:\SomeDirectory
目录下。我通常只需在命令行中使用java –cp SomeJavaFile.jar com.ctg.SomeJavaFile
手动运行此jar,然后让它全天候运行。
我们的Windows Server的问题是,如果它重新启动我需要将其作为服务运行,因此它会在启动时自动启动,因为我们对Vistakon的处理全天候运行。我用Google搜索并尝试使用服务包装器和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应该只在后台运行并不断轮询/ ping C:/ poll目录然后如果有数据存在它处理数据并将导出文件发送到另一个目录。
我已经成功使用了这个相同的.jar文件并且它没有改变,但我无法让它作为Windows服务运行。这是我用来获取服务包装器http://code.google.com/p/simple-service-wrapper/的站点。任何帮助将不胜感激!
答案 0 :(得分:3)
“winsw”是随Glassfish Java EE参考实施一起提供的Windows服务安装程序的独立版本。
效果很好,但不是完全抛光的产品 - 我已经将它用于这个目的已有几年了。在Windows机器上的某些最新版本中需要.NET。
答案 1 :(得分:1)
我认为最好的选择是使用Procrun的Apache Commons Daemon包装您的Java应用。
Procrun是一组允许Windows用户进行换行的应用程序 (主要)Java应用程序(例如Tomcat)作为Windows服务。
可以将服务设置为在机器启动时自动启动 并且将在没有用户登录到机器的情况下继续运行。
答案 2 :(得分:1)
根据我的分析,
Idle解决方案将编写一个VC ++(.net)Windows服务创建程序,以启动.bat(触发jar文件)/ .exe作为系统服务,并向SCM提供所有必需的回调方法。
注意:1。使用sc.exe / srvany.exe包装进程无法正常工作,因为它没有对SCM(服务控制管理器)的任何回调过程。 2. java服务Wrapper是第三方API(许多是LGPL许可)。
答案 3 :(得分:0)
如果您使用java -j some.jar
从命令行启动Java代码,它会一直运行,直到您终止程序,或者它是否自行停止?
需要有一个NON-Deamon Thread,它一直在运行。如果没有运行的线程,JVM将终止,但不会将其标记为守护进程。
如果您有一点预算,请购买安装工具。我用instll4j。使用该工具,您可以创建服务启动器并在安装期间安装它们。
答案 4 :(得分:0)
以下解决方案对于在Windows Server上将OpenFire Connection Manager(这是一个jar文件)作为服务运行的我来说很好。
下载并安装 the Non-Sucking Service Manager
我没有使用OpenFire团队制作的批处理,因为它对我不起作用(未发现依赖项错误...)因此,使用以下代码制作批处理文件:
@ECHO OFF
cd /D "E:\connection_manager\lib"
java -jar startup.jar
并将其另存为cm_startup.bat
在连接管理器的bin文件夹中。
之后,您可以使用NSSM创建服务。
因此,打开cmd.exe
并运行以下命令:
nssm install ConnManager "E:\connection_manager\lib\cm_startup.bat"
。
文档和示例
此处提供了有关非吸吮服务管理器的更多文档和示例: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"\"