即时更改Tomcat端口

时间:2009-06-25 20:04:14

标签: tomcat

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

3 个答案:

答案 0 :(得分:18)

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

export JAVA_OPTS=-Dport.http.nonssl=${CATALINA_BASE_PORT}

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

然后脚本启动Tomcat:

$CATALINA_HOME/bin/startup.sh

您现在需要更改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" />

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

答案 1 :(得分:1)

为了跟进Mark MacIver的第一个答案,这是我的start_solr.bat文件,它指定了一个端口和一个环境变量:

if "%1" == "" goto displayUsage
set JAVA_OPTS=%JAVA_OPTS% -Dport.http.nonssl=%1 -Dsolr.solr.home=../../
call startup.bat
goto end

:displayUsage
echo.
echo Usage: start_solr.bat [port i.e. 9001]
goto end

:end
cd "%CURRENT_DIR%"

答案 2 :(得分:0)

这有点像使用大锤破解坚果,但你可以使用嵌入在JBoss中的Tomcat,它具有在任意配置文件中替换系统属性的统一机制,包括tomcat server.xml。您的环境变量可以作为启动脚本中的系统属性传递(使用-D)。

JBoss可以被剥离到不比内核和tomcat多,所以你不需要运行整个射击比赛。但它仍然比独立的Tomcat重得多。