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

时间:2019-02-27 15:55:32

标签: java tomcat jvm-arguments tomcat9

我正在同一主机上运行多个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" />

如本answer中所述,我可以手动编辑选项以添加参数-Dport.http=8080-Dport.http=8180,它可以正常工作,但是我需要设置此JVM选项将Tomcat安装为Windows服务时。

下面是我正在安装.bat instance1作为Windows服务的Tomcat文件的内容(除了CATALINA_BASE,端口和服务名称,instance2相同)。如您所见,我还试图在将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

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果您想将-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

答案 1 :(得分:1)

最终,我可以通过在用于将“ 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%" ^

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