首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JRE_HOME在YAJSW窗口服务中的应用

JRE_HOME在YAJSW窗口服务中的应用
EN

Stack Overflow用户
提问于 2015-02-10 15:51:49
回答 1查看 2.6K关注 0票数 2

我正在评估用于windows的以下用例的YAJSW。

  1. 作为服务运行Java应用程序
  2. 使用JRE_HOME路径变量(%JRE_HOME%\bin\java.exe)中指定的java运行服务。

第二个用例非常重要,它允许两个灵活性( a)。安装任何较新版本的JRE(当java支持停止时/用户希望安装新的JRE) b)。应用程序不受用户安装的新JRE的影响。

wrapper.conf

代码语言:javascript
复制
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服务中的"YAJSWSimple“服务和来自yajsw(bat/startService.bat和bat\startService.bat)的命令文件开始/停止。

我无法在wrapper.java.commandwrapper.ntservice.java.command配置属性的帮助下实现第二个用例。

我在windows服务列表中检查了YAJSWSimple服务的可执行属性的路径,它显示了以下内容。

代码语言:javascript
复制
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服务的可执行属性的路径如下

代码语言:javascript
复制
%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机器执行相同的评估。我希望同样的解决方案也适用于其他平台。
EN

回答 1

Stack Overflow用户

发布于 2015-03-24 11:37:19

我在wrapper.conf中创建了一个满足这两种情况的windows服务

代码语言:javascript
复制
wrapper.java.command = java

这有效地使用了键入java -version时指定的相同版本的java。每次更新JRE之后,java -version都会显示使用的是最新版本,因此YAJSW将使用最新版本。

在我的设置中(Windows7 x32,YAJSW 11.11),我注意到在安装/更新JRE之后,没有设置JRE_HOME或JAVA_HOME,echo %PATH%显示在路径中没有设置java,但是输入java -version总是在安装/更新之后更新。然后,我发现java.exejavaw.exejavaws.exe都存在于C:\Windows\System32\中,并且在每次更新之后都会更新。因此,只需在java中使用wrapper.conf就可以指向最后安装的JRE。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28435959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档