在YAJSW窗口服务中使用JRE_HOME
我正在评估以下Windows用例的YAJSW。在YAJSW窗口服务中使用JRE_HOME
- 运行的Java应用程序作为服务
- 运行使用JRE_HOME路径变量(%JRE_HOME%\ bin中\ java.exe的)指定的Java 该服务。
第二个用例非常重要,它允许2个灵活性 a)。安装任何更新版本的JRE(当有Java支持中止时/用户希望安装新的JRE) b)。应用程序不会受到新的JRE由用户安装
wrapper.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.我能够启动/从窗口服务既“YAJSWSimple”的服务,并停止命令文件(bat/startService.bat和bat \ startService.bat)
我无法通过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
配置属性指定的路径。
要完成我想要的路径YAJSWSimple服务的可执行文件属性为如下第二个用例
%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机器的相同用例。我希望同样的解决方案也适用于其他平台。
我创造出满足这两种情况下,在wrapper.conf
下一个窗口服务:
wrapper.java.command = java
这有效地利用了Java的相同版本的打字java -version
时指定。在每次JRE更新后,java -version
显示正在使用最新版本,因此YAJSW将使用最新版本。
我注意到在我的设置(Windows 7 x32,YAJSW 11.11)上安装/更新JRE之后,JRE_HOME或JAVA_HOME都没有设置,并且echo %PATH%
显示java未设置为应该的路径,打字java -version
总是在安装/更新后更新。然后我发现java.exe
,javaw.exe
和javaws.exe
存在于C:\Windows\System32\
中,并且在每次更新后更新。因此,只需在wrapper.conf
中使用java
将指向上次安装的JRE。