Вопрос по – Изменить порт Tomcat на лету

4

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

Ваш Ответ

3   ответа
0

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

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

Хм, я думаю, что вы правы насчет кувалды, но, возможно, я мог бы взять эту идею и обернуть сценарий Tomcat startup.sh в другой сценарий и заменить порт в server.xml моей переменной среды перед выполнением startup.sh. Mark MacIver
18

AVA_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}, всякий раз, когда вы запускаете его с помощью нового сценария запуска.

На шаг лучше (особенно если используется несколько экземпляров с CATALINA_BASE). Создайте файл & quot; setenv.sh & quot; добавьте строку JAVA_OPTS и поместите ее в каталог bin экземпляра. Либо CATALINA_HOME / bin / setenv.sh, либо CATALINA_BASE / bin / setenv.sh
Вот пример моего start_solr.bat, который передает порт и другую переменную! Awesome fix: REM Этот парень обрабатывает указание номера порта для запуска. REM Мы не предполагаем, что знаем, на каком порту работать. если & quot;% 1 & quot; == & quot; & quot; Перейти к displayUsage set JAVA_OPTS =% JAVA_OPTS% -Dport.http.nonssl =% 1 -Dsolr.solr.home = .. / .. / call startup.bat Перейти к концу: displayUsage echo. echo Использование: start_solr.bat [порт т.е. 9001] goto end: end cd & quot;% CURRENT_DIR% & quot;
1

вот мой файл 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%"

Похожие вопросы