我正在尝试使用procrun包装一个Spring Boot“uber JAR”文件。
以下命令按预期运行:
java -jar my.jar
我需要我的Spring Boot JAR文件在Windows启动时自动启动。 对此最好的解决方案是将JAR文件作为服务运行(与独立Tomcat相同)。
当我尝试运行此操作时,出现“Commons Daemon procrun failed with exit value: 3”的错误。
查看Spring Boot源代码,似乎它使用了自定义类加载器:
直接运行我的main方法时,我也会收到“ClassNotFoundException”错误:
java -cp my.jar my.MainClass
有没有一种方法可以使用Spring Boot JAR文件中的主方法(而不是通过JarLauncher)运行我的主方法?
是否有人已成功地将Spring Boot与procrun集成?
我知道http://wrapper.tanukisoftware.com/,但由于其许可证问题,我无法使用它。
更新:
现在我已成功使用procrun启动服务。
set SERVICE_NAME=MyService
set BASE_DIR=C:\MyService\Path
set PR_INSTALL=%BASE_DIR%prunsrv.exe
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=%BASE_DIR%
set PR_STDOUTPUT=%BASE_DIR%stdout.txt
set PR_STDERROR=%BASE_DIR%stderr.txt
set PR_LOGLEVEL=Error
REM Path to java installation
set PR_JVM=auto
set PR_CLASSPATH=%BASE_DIR%%SERVICE_NAME%.jar
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTIMAGE=c:\Program Files\Java\jre7\bin\java.exe
set PR_STARTMODE=exe
set PR_STARTPARAMS=-jar#%PR_CLASSPATH%
REM Shutdown configuration
set PR_STOPMODE=java
set PR_STOPCLASS=TODO
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=64
set PR_JVMMX=256
REM Install service
%PR_INSTALL% //IS//%SERVICE_NAME%
我现在只需要找出如何停止该服务。我考虑使用spring-boot执行器关闭JMX Bean来完成此操作。
目前停止服务时会发生什么是:Windows无法停止服务(但将其标记为已停止),服务仍在运行(我可以浏览到本地主机),任务管理器中没有提到该进程(这不太好!除非我眼瞎了)。
java -jar my.jar
来启动服务。在Windows上,您可以始终使用批处理文件来启动服务...请参见https://dev59.com/O3RC5IYBdhLWcg3wFNDX - M. DeinumREM 停止服务
%PR_INSTALL% //SS//%SERVICE_NAME%
参考: https://commons.apache.org/proper/commons-daemon/procrun.html - Hames