2015-02-10 65 views
2

我正在評估以下Windows用例的YAJSW。在YAJSW窗口服務中使用JRE_HOME

  1. 運行的Java應用程序作爲服務
  2. 運行使用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.commandwrapper.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.commandwrapper.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 
  1. 這可怎麼在YAJSW實現,所以安裝服務不會受JRE升級?

  2. 我打算評估linux/unix機器的相同用例。我希望同樣的解決方案也適用於其他平臺。

回答

0

我創造出滿足這兩種情況下,在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.exejavaws.exe存在於C:\Windows\System32\中,並且在每次更新後更新。因此,只需在wrapper.conf中使用java將指向上次安裝的JRE。