Изменить порт Tomcat на лету - PullRequest
4 голосов
/ 26 июня 2009

Я бы хотел сохранить порт Tomcat v5.5 в переменной окружения и заставить Tomcat прослушивать этот порт. Пока что единственный способ изменить порт - это изменить $ CATALINA_HOME / conf / server.xml. Есть ли способ установить значение порта путем предоставления внешнего значения при запуске Tomcat? Я использую Tomcat на Solaris.

Ответы [ 3 ]

18 голосов
/ 15 июля 2009

Создать скрипт для запуска 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, чтобы HTTP-соединитель без SSL использовал свойство 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 голос
/ 15 сентября 2010

Просто для продолжения первого ответа Марка Макивера, вот мой файл 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%"
0 голосов
/ 26 июня 2009

Это немного похоже на использование кувалды для взлома гайки, но вы можете использовать Tomcat, встроенный в JBoss, который имеет унифицированный механизм для замены системных свойств в произвольных файлах конфигурации, включая tomcat server.xml. Переменная вашей среды может быть передана как системное свойство в сценарии запуска (с использованием -D).

JBoss можно разделить не более чем на ядро ​​и tomcat, так что вам не нужно будет запускать весь стреляющий матч. Но он все равно будет значительно тяжелее, чем автономный Tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...