6

如何在 Windows 2008 服务器上将 Java .jar 文件作为 Windows 服务运行?我有一个名为 SomeJavaFile.jar 的 jar 文件,位于C:\SomeDirectoryWindows Server 2008 框的目录下。我通常只是在命令行中手动运行这个 jar:java –cp SomeJavaFile.jar com.ctg.SomeJavaFile然后让它 24/7 运行。

我们的 Windows Server 的问题是,如果它重新启动,我需要将它作为服务运行,以便它在启动时自动作为服务启动,因为我们对 Vistakon 的处理运行 24/7。我用谷歌搜索并尝试使用服务包装器和 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/的站点。任何帮助将不胜感激!

4

5 回答 5

4

“winsw”是随 Glassfish Java EE 参考实现一起提供的 Windows 服务安装程序的独立版本。

效果很好,但不是一个完全抛光的产品 - 我已经为此目的使用了几年。在 Windows 机器上的某些最新版本中需要 .NET。

https://github.com/kohsuke/winsw

于 2012-10-17T19:59:46.543 回答
1

根据我的分析,

空闲解决方案将编写一个 VC++ (.net) Windows 服务创建程序,以将 .bat(触发 jar 文件)/.exe 作为系统服务启动,其中包含所有必需的 SCM 回调方法。

注意: 1. 使用 sc.exe / srvany.exe 包装进程将不起作用,因为它没有任何对 SCM(服务控制管理器)的回调进程。2. java service Wrapper 是第三方 API(很多是 LGPL 许可的)。

于 2014-06-24T17:32:23.690 回答
1

我认为最好的选择是用Procrun of Apache Commons Daemon包装你的 java 应用程序。

Procrun 是一组应用程序,允许 Windows 用户将(大部分)Java 应用程序(例如 Tomcat)包装为 Windows 服务。

该服务可以设置为在机器启动时自动启动,并且在没有用户登录机器的情况下继续运行。

于 2012-10-17T20:04:42.797 回答
0

如果您使用命令行从命令行启动 Java 代码,java -j some.jar它会一直运行到您终止程序,还是会自行停止?

需要有一个非守护线程,它一直在运行。如果没有线程在运行,JVM 将终止,即未标记为守护进程。

如果您有一点预算,请购买安装工具。我使用 instll4j。使用该工具,您可以创建服务启动器并在安装期间安装它们。

于 2012-10-17T19:36:31.507 回答
0

以下解决方案适用于我在 Windows Server 上作为服务运行的 OpenFire 连接管理器(这是一个 jar 文件)。

下载并安装非吸盘服务管理器

我没有使用 OpenFire 团队制作的批处理,因为它对我不起作用(未找到依赖项错误...)因此,使用以下代码制作批处理文件:

@ECHO OFF

cd /D "E:\connection_manager\lib"
java -jar startup.jar

并将其保存cm_startup.bat在连接管理器的 bin 文件夹中。

之后,您可以使用 NSSM 创建服务。因此,打开 acmd.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"\"
于 2018-09-26T07:24:31.747 回答