即时更改Tomcat端口

Mar*_*ver 4 tomcat

我想将Tomcat v5.5端口存储在环境变量中,并让Tomcat侦听该端口.到目前为止,我可以看到更改端口的唯一方法是修改$ CATALINA_HOME/conf/server.xml.有没有办法在启动Tomcat时通过提供外部值来设置端口值?我在Solaris上运行Tomcat.

Mar*_*ver 18

创建一个脚本以启动Tomcat.在启动脚本中,导出JAVA_OPTS以指定Tomcat属性的值port.http.nonssl(请注意,您可以随意调用此属性).

export JAVA_OPTS=-Dport.http.nonssl=${CATALINA_BASE_PORT}
Run Code Online (Sandbox Code Playgroud)

如您所见,我已设置port.http.nonssl为环境变量${CATALINA_BASE_PORT}

然后该脚本启动Tomcat:

$CATALINA_HOME/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)

您现在需要更改Tomcat $CATALINA_HOME/conf/server.xml文件,以便非SSL HTTP连接器使用该port.http.nonssl属性而不是硬编码值.

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="${port.http.nonssl}" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443" acceptCount="100"
           connectionTimeout="20000" disableUploadTimeout="true" />
Run Code Online (Sandbox Code Playgroud)

现在,只要您通过新的启动脚本启动它,Tomcat就会使用$ {CATALINA_BASE_PORT}环境变量中定义的端口.

  • 更好一步(特别是如果使用CATALINA_BASE的多个实例)创建文件"setenv.sh"添加JAVA_OPTS行并将其放在实例的bin目录中.CATALINA_HOME/bin/setenv.sh或CATALINA_BASE/bin/setenv.sh (3认同)