[英]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.