动态更改Tomcat端口

动态更改Tomcat端口,tomcat,Tomcat,我希望将Tomcat v5.5端口存储在环境变量中,并让Tomcat在该端口上侦听。到目前为止,我能看到的改变端口的唯一方法是修改$CATALINA_HOME/conf/server.xml。启动Tomcat时,是否有一种通过提供外部值来设置端口值的方法?我正在Solaris上运行Tomcat。这有点像用大锤敲开螺母,但您可以使用JBoss中嵌入的Tomcat,它有一个统一的机制来替换任意配置文件中的系统属性,包括Tomcat server.xml。您的环境变量可以作为系统属性在启动脚本中传递(

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

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


JBoss可以简化为内核和tomcat,因此您不需要运行整个射击比赛。但是它仍然比独立的Tomcat要重得多。

创建一个脚本来启动Tomcat。在启动脚本中,export JAVA_选择为Tomcat属性
port.http.nonssl
指定一个值(注意,您可以随意调用此属性)

如您所见,我已将
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}环境变量中定义的端口。

下面是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%"

嗯,我认为你说的大锤是对的,但也许我可以接受这个想法,将Tomcat startup.sh脚本包装在另一个脚本中,并在执行startup.sh之前用我的环境变量替换server.xml中的端口。更好的一步(特别是如果使用多个实例和CATALINA_BASE)创建一个文件“setenv.sh”添加JAVA_OPTS行并将其放置在实例的bin目录中。CATALINA_HOME/bin/setenv.sh或CATALINA_BASE/bin/setenv.sh这里是我的start_solr.bat的一个示例,它传入一个端口和另一个变量!很棒的修复:REM这个家伙负责指定要启动的端口号。REM我们不认为我们知道在哪个端口上运行。如果“%1”==“转到显示使用设置JAVA\u OPTS=%JAVA\u OPTS%-Dport.http.nonssl=%1-Dsolr.solr.home=../../call startup.bat转到结束:显示使用回音。回显用法:开始\u solr.bat[端口即9001]转到结束:结束cd“%CURRENT\u DIR%”
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%"