我正在为以下 Windows 用例评估 YAJSW。
- 将 Java 应用程序作为服务运行
- 使用 JRE_HOME 路径变量 (%JRE_HOME%\bin\java.exe) 中指定的 java 运行服务。
第二个用例非常重要,它允许 2 个灵活性 a)。安装任何较新版本的 JRE(当 Java 支持停止/用户希望安装新的 JRE)b)。应用程序不受用户安装的新 JRE 的影响
包装器.conf
wrapper.working.dir = ${wrapper_home}
wrapper.java.command = ${jre_home}/bin/java
wrapper.java.app.mainclass = com.myapp.launcher.Main
wrapper.java.classpath.1 = ${wrapper_home}/jars/simple.jar
wrapper.java.additional.1 = -Xms3m
#wrapper.java.additional.2 = -Xmx512m
wrapper.ntservice.name = YAJSWSimple
wrapper.ntservice.displayname = YAJSWSimple
wrapper.ntservice.description = YAJSW Simple Service
wrapper.ntservice.starttype = AUTO_START
wrapper.ntservice.interactive = false
wrapper.ntservice.java.command = ${jre_home}/bin/java
上述配置满足用例 1。我可以从 Windows 服务的“YAJWSSimple”服务和 yajsw(bat/startService.bat 和 bat\startService.bat)的命令文件启动/停止
在config 属性的帮助下wrapper.java.command
,我无法实现第二个用例。wrapper.ntservice.java.command
我在 Windows 服务列表中检查了 YAJSWSimple 服务的可执行属性的路径,它显示了以下内容。
C:\Program Files (x86)\Java\jre7\bin\java.exe
-classpath C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11\wrapper.jar
-Xrs -Dwrapper.service=true
-Dwrapper.working.dir=C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11
-Djava.net.preferIPv4Stack=true -Djre_home="C:\Program Files (x86)\Java\jre7"
-Dwrapper_home=C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11\bat\/..
-Dwrapper.java.command="C:\Program Files (x86)\Java\jre7/bin/java"
-Dwrapper.ntservice.java.command="C:\Program Files (x86)\Java\jre7/bin/java"
-Dwrapper.config=C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11\conf\wrapper.conf
-Dwrapper.additional.1x=-Xrs
-Djna_tmpdir=C:\Users\sathish\AppData\Local\Temp
org.rzo.yajsw.boot.WrapperServiceBooter
该服务扩展了我在wrapper.java.command
和wrapper.ntservice.java.command
配置属性中指定的路径。
为了完成第二个用例,我希望 YAJWSSimple 服务的可执行属性的路径如下
%JRE_HOME%/bin\java.exe
-classpath C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11\wrapper.jar
-Xrs -Dwrapper.service=true
-Dwrapper.working.dir=C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11 -Djava.net.preferIPv4Stack=true
-Dwrapper_home=C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11\bat\/.. -Dwrapper.java.command="%JRE_HOME%/bin/java"
-Dwrapper.ntservice.java.command="%JRE_HOME%/bin/java"
-Dwrapper.config=C:\Users\sathish\Softwares\yajsw\yajsw-stable-11.11\conf\wrapper.conf
-Dwrapper.additional.1x=-Xrs
-Djna_tmpdir=C:\Users\sathish\AppData\Local\Temp
org.rzo.yajsw.boot.WrapperServiceBooter
如何在 YAJSW 中实现这一点,以便安装的服务不受 JRE 升级的影响?
我也将对 linux/unix 机器的相同用例进行评估。我希望同样的解决方案也适用于其他平台。