繁体   English   中英

在将 Tomcat 安装为 Windows 服务时设置 JAVA_OPTS

[英]Setting JAVA_OPTS while installing Tomcat as windows service

我在同一台主机上运行多个Tomcat实例,并将它们安装为 Windows 服务。 当然,这是针对每个Tomcat实例的不同端口。 现在我试图从server.xml文件中提取端口号并尝试将它们作为 JVM 选项传递,以便server.xml文件对于所有Tomcat实例看起来都相同。 目前,我的server.xml文件中每个实例的连接器端口如下所示:

实例 1

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

实例2

<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

我试图让它看起来像

<Connector port="${port.http}" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

正如在这个答案中提到的,我可以手动编辑选项以添加参数-Dport.http=8080-Dport.http=8180并且它工作正常,但我需要的是在安装Tomcat时设置这个 JVM 选项一个窗口服务。

以下是我运行以将Tomcat instance1 安装为 windows 服务的.bat文件的内容(它与 instance2 相同,除了 CATALINA_BASE、端口和服务名称)。 如您所见,我还尝试在将JAVA_OPTS安装为服务之前对其进行设置,但我似乎对此没有任何运气。 我也试过用双引号像CALL SET "JAVA_OPTS=-Dport.http=8080"CALL SET JAVA_OPTS="-Dport.http=8080"

CALL SET JAVA_HOME=D:\Java
CALL SET CATALINA_BASE=D:\instance1
CALL SET JAVA_OPTS=-Dport.http=8080
CALL CD %CATALINA_HOME%\bin
service install instance1

有人可以帮忙吗?

如果您想将-D选项设置为标题中的状态,而不是对--JvmOptions https://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html感兴趣

例如

Install the service named 'Tomcat7'
C:\> tomcat7 //IS//Tomcat7 --DisplayName="Apache Tomcat 7" ^
     --Install="C:\Program Files\Tomcat\bin\tomcat7.exe" --Jvm=auto ^
     --StartMode=jvm --StopMode=jvm ^
     --JvmOptions -DwhateverHere
     --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
     --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop

最终,我可以通过在用于将“ Tomcat”安装为Windows服务的批处理文件中设置JvmArgs来解决该问题。 我的.bat文件的内容如下所示:

CALL SET JAVA_HOME=D:\Java
CALL SET CATALINA_BASE=D:\instance1
CALL SET JAVA_OPTS=-Dport.http=8080
CALL SET JvmArgs=-Dport.http=8080;-Dport.shutdown=8005 // This line did the trick
CALL CD %CATALINA_HOME%\bin
service install instance1

当我查看service.bat文件中的代码以检查JVM选项的设置方式时发现了这一点,并发现%JvmArgs%附加在末尾,如下所示:

--JvmOptions "-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-D%ENDORSED_PROP%=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;%JvmArgs%" ^

希望这可以帮助寻找相似配置的人:)

如果您仔细阅读https://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html 中有关 jvmoptions 的详细信息,您会看到它说它在 exe 模式下不起作用。 我已经证实了这一点。 即使该值出现在 tomcat6w 中,它也无法在 catalina.properties 中使用。 事实上,即使是 tomcat 8 & 9 也声明了同样的事情。 如果有人能证明我错了,我会很高兴。 探索仍在继续......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM